A. js交換數組中2個元素的位置,實現排序功能
原始數據:數組中有三個關於電影的對象數據
需求:需要根據評分(rating)的高低,按倒序排列,即評分越高,越靠前
錯誤示範一:
個人想法:把當前值賦給下一個值,再把下一個搏前值賦給當前值,理論上來說沒問題的。但是...............
結果:
錯誤示鏈粗范二:
結果:評分都覆蓋了,變為一組數據了
正確示範一:
結果:
正確示範二(es6解構賦值寫法):
結果:
正確示範三:sort排序(注意這樣是返回的新數組,而不是修改原數組)
返回值是負數,意味著不交換位置,返回值是正數交換位置,0的話,值是相等的,也就不存在交換一說了
結果:
正確示範四:sort排序(注意這樣是返回的新數組,而不是修改原數組)
直接返回a-b的結果,a大於b,即返回正數交換,a小於b,即返回負數不交換,這樣得到的數據是反的,即分數越高,排名越靠後,通過翻轉得到正確的數據
或者返回b-a的結果就是正確的
結果:
如上就是根據需求交換數組數據實現排序的方法。
如有問題基喚清,請指出,接受批評。
B. JS里AJAX的使用--(伺服器與客戶端數據交換)
使用ajax需要先了解計算機前後端的通信原理,也就是需要了解我們的伺服器與客戶端數據是如何交換的。
DNS的查詢過程:(以訪問www.qq.com為例)
1、在瀏覽器中輸入www.qq.com域名,操作系統會先檢查自己 本地的hosts文件 是否有這個網址映射關系,如果有,就先調用這個IP地址映射,完成域名解析。
2、如果hosts里沒有這個域名的映射,則查找 本地DNS解析器緩存 ,是否有這個網址映射關系,如果有,直接返回,完成域名解析。
3、如果hosts與本地DNS解析器緩存都沒有相應的網址映射關系,首先會找TCP/IP參數中設置的首選DNS伺服器,在此我們叫它 本地DNS伺服器 ,此伺服器收到查詢時,如果要查詢的域名,包含在本地配置區域資源中,則返回解析結果給客戶機,完成域名解析,此解析具有權威性。
4、如果要查詢的域名,不由本地DNS伺服器區域解析,岩州但該 伺服器 已 緩存 了此網址映射關系,則調用這個IP地址映射,完成域名解析,此解析不具有權威性。
5、如果本地DNS伺服器本地區域文件與緩存解析都失效,則根據本地DNS伺服器的設置(是否設置轉發器)進行查詢,如果未用轉發模式,本地DNS就把請求發至 根DNS ,根DNS伺服器收到請求後會判斷這個域名(.com)是誰來授權管理,並會返回一個負責該 頂級域名伺服器 的一個IP。本地DNS伺服器收到IP信息後,將會聯系負責.com域的這台伺服器。這台負責.com域的伺服器收到請求後,如果自己無法解析,它就會找一個粗肢蔽管理.com域的下一級DNS伺服器地址(qq.com)給本地DNS伺服器。當本地DNS伺服器收到這個地址後,就會找qq.com域伺服器,重復上面的動作,進行查詢,直至找到www.qq.com主機。
埠號
埠號---具有網路功能的應用軟體的標識號。注意,埠號是不固定的,即可以由用戶手工可以分配(當然,一般在軟體編寫時就已經定義)。當然,有很多應用軟體有公認的默認的埠,比如飢檔FTP:20和21,HTTP:80,TELNET:23等等,這里就不一一列舉了。一個軟體可以擁有多個埠號,這證明這個軟體擁有不止一個網路功能。
0-1023是公認埠號,即已經公認定義或為將要公認定義的軟體保留的,而1024-65535是並沒有公共定義的埠號,用戶可以自己定義這些埠的作用。
那麼埠號到底有什麼作用呢?請大家繼續往下看。
當一台電腦啟動了一個可以讓遠程其他電腦訪問的程序,那麼它就要開啟至少一個埠號來讓外界訪問。我們可以把沒有開啟埠號的電腦看作是一個密封的房間,密封的房間當然不可能接受外界的訪問,所以當系統開啟了一個可以讓外界訪問的程序後它自然需要在房間上開一個窗口來接受來自外界的訪問,這個窗口就是埠。
那麼為什麼要給埠編號來區分它們呢,既然一個程序開了一個埠,那麼不是外部信息都可以通過這個開啟的埠來訪問了嗎?答案是不可以。為什麼呢?因為數據是用埠號來通知傳輸層協議送給哪個軟體來處理的,數據是沒有智慧的,如果很多的程序共用一個埠來接受數據的話,那麼當外界的一個數據包送來後傳輸層就不知道該送給哪一個軟體來處理,這樣勢必將導致混亂。
上一次提到提到在一個經過OSI第四層傳輸層封裝的數據段的第四層報頭里包含兩個埠號,既源埠號和目的埠號,目的埠號的作用上面已經介紹了,下面讓我們了解一下原埠號吧。
源埠號一般是由系統自己動態生成的一個從1024-65535的號碼,當一台計算機A通過網路訪問計算機B時,如果它需要對方返回數據的話,它也會隨機創建一個大於1023的埠,告訴B返回數據時把數據送到自己的哪個埠,然後軟體開始偵聽這個埠,等待數據返回。而B收到數據後會讀取數據包的源埠號和目的埠號,然後記錄下來,當軟體創建了要返回的數據後就把原來數據包中的原埠號作為目的埠號,而把自己的埠號作為原埠號,也就是說把收到的數據包中的原和目的反過來,然後再送回A,A再重復這個過程如此反復直到數據傳輸完成。當數據全部傳輸完A就把源埠釋放出來,所以同一個軟體每次傳輸數據時不一定是同一個源埠號.
埠分類 邏輯意義上的埠有多種分類標准,下面將介紹兩種常見的分類:
1、 按埠號分布劃分
(1)知名埠(Well-Known Ports)
知名埠即眾所周知的埠號,范圍從0到1023,這些埠號一般固定分配給一些服務。比如21埠分配給FTP服務,25埠分配給SMTP(簡單郵件傳輸協議)服務,80埠分配給HTTP服務,135埠分配給RPC(遠程過程調用)服務等等。
(2)動態埠(Dynamic Ports)
動態埠的范圍從1024到65535,這些埠號一般不固定分配給某個服務,也就是說許多服務都可以使用這些埠。只要運行的程序向系統提出訪問網路的申請,那麼系統就可以從這些埠號中分配一個供該程序使用。比如1024埠就是分配給第一個向系統發出申請的程序。在關閉程序進程後,就會釋放所佔用的埠號。
不過,動態埠也常常被病毒木馬程序所利用,如冰河默認連接埠是7626、WAY 2.4是8011、Netspy 3.0是7306、YAI病毒是1024等等。
2、按協議類型劃分
按協議類型劃分,可以分為TCP、UDP、IP和ICMP(Internet控制消息協議)等埠。下面主要介紹TCP和UDP埠:
(1)TCP埠
TCP埠,即傳輸控制協議埠,需要在客戶端和伺服器之間建立連接,這樣可以提供可靠的數據傳輸。常見的包括FTP服務的21埠,Telnet服務的23埠,SMTP服務的25埠,以及HTTP服務的80埠等等。
(2)UDP埠
UDP埠,即用戶數據包協議埠,無需在客戶端和伺服器之間建立連接,安全性得不到保障。常見的有DNS服務的53埠,SNMP(簡單網路管理協議)服務的161埠,QQ使用的8000和4000埠等等。
常用的埠號
【21埠】
21埠主要用於FTP(File Transfer Protocol,文件傳輸協議)服務。
【23埠】
23埠主要用於Telnet(遠程登錄)服務,是Internet上普遍採用的登錄和模擬程序。
【25埠】
25埠為SMTP(Simple Mail Transfer Protocol,簡單郵件傳輸協議)伺服器所開放,主要用於發送郵件,如今絕大多數郵件伺服器都使用該協議。
【53埠】
53埠為DNS(Domain Name Server,域名伺服器)伺服器所開放,主要用於域名解析,DNS服務在NT系統中使用的最為廣泛。
【69埠】
TFTP是Cisco公司開發的一個簡單文件傳輸協議,類似於FTP。
【80埠】
80埠是為HTTP(HyperText Transport Protocol,超文本傳輸協議)開放的,這是上網沖浪使用最多的協議,主要用於在WWW(World Wide Web,萬維網)服務上傳輸信息的協議。
【443 埠】
服務:Https
說明:網頁瀏覽埠,能提供加密和通過安全埠傳輸的另一種HTTP。
【109、110埠】
109埠是為POP2(Post Office Protocol Version 2,郵局協議2)服務開放的。
110埠是為POP3(郵件協議3)服務開放的,POP2、POP3都是主要用於接收郵件的。
C. javascript 實現兩個div位置互換或者內容互換 請高手給個經典實用的代碼 謝謝
<divid='div1'>xxx</div>
<divid='div2'>yyy</div>
<script>
var d1=document.getElementById('div1').innerHTML;
var d2=document.getElementById('div2').innerHTML;
document.getElementById('div2').innerHTML=d1;
document.getElementById('div1').innerHTML=d2;
</script>
D. JavaScript想寫個function,沒能交換成功
js中函數參數按照值傳遞,在函數內部對耐則形參進行操作對實參不造成任何影響,這就是沒有交換的原高畝鏈因。
試試戚孫下面這個
========================================================
var obj = {
a : 1,
b : 2
};
(function swap(obj) {
var temp = obj.a;
obj.a = obj.b;
obj.b = temp;
})(obj);
alert(obj.a);
alert(obj.b);
E. Flask 和 Javascript 之間怎麼交換變數
flask和js之間的橋梁應該是html,比如
<div id='something'>{{ message }}</div>
flask可用model來給message賦值
js可以使用版$.html()取得message值,
同理權js可以給input的value賦值,flask通過request得到
F. 求一個javascript動畫函數,用來交換兩個元素位置
<div style="width:200px;height:200px;background:Red;position:absolute;left:10px;top:10px;" id="div1">div1</div>
<br><br>
<div style="width:200px;height:200px;background:green;position:absolute;left:500px;top:300px;" id="div2">div2</div>
<br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR>
<input name="tt" type="button" id="tt" value="交換位置" onclick="jiao()">
<script>
function getPos(obj){
var top=0,left=0;
if(obj){
while(obj.offsetParent){
top += obj.offsetTop;
left += obj.offsetLeft;
obj = obj.offsetParent;
}
}
return[top,left];
}
var flag;
function jiao(){
clearTimeout(flag);
var obj1=document.getElementById("div1");
var obj2=document.getElementById("div2");
var a=getPos(obj1);
var b=getPos(obj2);
var t=5;
var l=9;
var Tflag=false;
var Lflag=false;
function move(){
if(a[0]<=b[0]){
var c=getPos(obj1)[0]-b[0]<t?t:getPos(obj1)[0]-b[0];
d=getPos(obj2)[0]-a[0]>t?t:getPos(obj2)[0]-a[0];
if(getPos(obj1)[0]<b[0]){obj1.style.top=getPos(obj1)[0]+c;}
if(getPos(obj2)[0]>a[0]){obj2.style.top=getPos(obj2)[0]-d;}
}else{
var c=getPos(obj1)[0]-b[0]>t?t:getPos(obj1)[0]-b[0];
var d=getPos(obj2)[0]-a[0]<t?t:getPos(obj2)[0]-a[0];
if(getPos(obj1)[0]>b[0]){obj1.style.top=getPos(obj1)[0]-c;}
if(getPos(obj2)[0]<a[0]){obj2.style.top=getPos(obj2)[0]+d;}
}
if(getPos(obj1)[0]==b[0]&&getPos(obj2)[0]==a[0]){
Tflag=true;
}
if(a[1]<=b[1]){
var c=getPos(obj1)[1]-b[1]<l?l:getPos(obj1)[1]-b[1];
var d=getPos(obj2)[1]-a[1]>l?l:getPos(obj2)[1]-a[1];
if(getPos(obj1)[1]<b[1]){obj1.style.left=getPos(obj1)[1]+c;}
if(getPos(obj2)[1]>a[1]){obj2.style.left=getPos(obj2)[1]-d;}
}else{
var c=getPos(obj1)[1]-b[1]>l?l:getPos(obj1)[1]-b[1];
var d=getPos(obj2)[1]-a[1]<l?l:getPos(obj2)[1]-a[1];
if(getPos(obj1)[1]>b[1]){obj1.style.left=getPos(obj1)[1]-c;}
if(getPos(obj2)[1]<a[1]){obj2.style.left=getPos(obj2)[1]+d;}
}
if(getPos(obj1)[1]==b[1]&&getPos(obj2)[1]==a[1]){
Lflag=true;
}
if(!(Tflag&&Lflag)){
flag=setTimeout(move,30);
}
}
move();
}
</script>
花了一兩個小時給你編寫了一個,自己可以調整裡面的參數,由於時間問題,沒有仔細的測試!
G. js怎麼讓兩個數值相互交換
var temp; // 聲明了一個臨時變數為空
var apple1 = '青蘋果';
var apple2 = '紅蘋果';
temp = apple1; // 把右宏敏爛雹邊給左邊蔽歷枝
apple1 = apple2;
apple2 = temp;
console.log(apple1);
console.log(apple2);
H. 在JavaScript中如何構造一個函數,要求接受兩個參數,交換兩個參數的值並返回
代碼及執行結果見圖余伏返片
見廳罩圖豎飢片執行結果
I. javascript下將兩個獨立的div模塊交換位置求解
<BODY>
<divid=SS>
</div>
<inputid=I1>
<inputid=I2>
<buttononclick='change()'/>change</button>
</BODY>
<SCRIPT>
varkk=[
'<divid="content1"style="width:500px;height:20px;border:1pxsolidblack">B1</div>',
'<divid="content2"style="width:500px;height:20px;border:1pxsolidblack">B2</div>',
'<divid="content3"style="width:500px;height:20px;border:1pxsolidblack">B3</div>',
'<divid="content4"style="width:500px;height:20px;border:1pxsolidblack">B4</div>'
]
varcx=[0,1,2,3];
for(vari=0;i<kk.length;i++){
SS.insertAdjacentHTML('beforeEnd',kk[i])
}
functionchange(){
varc0;
varc1;
for(vari=0;i<cx.length;i++){
if(SS.children(i).innerHTML==I1.value){
c0=i
}
if(SS.children(i).innerHTML==I2.value){
c1=i
}
}
vara=cx[c1]
cx[c1]=cx[c0]
cx[c0]=a
for(vari=0;i<cx.length;i++){
SS.removeChild(SS.children(0))
SS.insertAdjacentHTML("beforeEnd",kk[cx[i]]);
}
}
</SCRIPT>
J. js 字元串與數字類型互換的方法
一、字元串轉換為數字:
在js讀取文本框或者其它表單數據的時候獲得的值是字元串類型的,例如兩個文本框a和b,如果獲得a的value值為11,b的value值為9 ,那麼a.value要小於b.value,因為他們都是字元串形式的.所以在比較前需要將它們各自的值轉換為Number類型。
主要的方法有三種:
轉換函數、強制類型轉換、利用js變數弱類型轉換 。
1.轉換函數 parseInt() 和 parseFloat();
parseInt(str): 將字元串類型轉換為 整型 ,當函數的參數不是字元串時,函數返回NaN(Not a Number);
parseFloat(str): 將字元串類型轉換為 浮點型 ,當函數的參數不是字元串時,函數返回NaN(Not a Number);
注1:凡是一切表示數的形式的字元串都可以通過上面的兩個函數轉化為數字,例如:
普通的數字 : parseInt('123') // 123
浮點數 : parseInt('123.45') // 123
十六進制數:parseInt('0x11') // 17
科學計數法: parseInt('3e12') // 3; parseInt('13e12') // 13;
注2:parseInt()函數支持十六進制形式的字元串轉換為整型,但是 parseFloat()函數不支持十六進制形式的字元串轉換為浮點型,但是會返回數字0.原因是parseFloat()函數將參數為十六進制的字元串 "0x11"的第一個字元零(0)看做數字,將其他的忽略。
2.強制類型轉換
可使用強制類型轉換(type casting)處理轉換值的類型。使用強制類型轉換可以訪問特定的值,即使它是另一種類型的。
ECMAScript中可用的3種強制類型轉換如下:
Boolean(value)——把給定的值轉換成Boolean型;
Number(value)——把給定的值轉換成數字(可以是整數或浮點數);
String(value)——把給定的值轉換成字元串。
用這三個函數之一轉換值,將創建一個新值,存放由原始值直接轉換成的值。這會造成意想不到的後果。
當要轉換的值是至少有一個字元的字元串、非0數字或對象時,Boolean()函數將返回true。如果該值是空字元串、數字0、undefined或null,它將返回false。
3. 利用js變數弱類型轉換
二、數字轉換為字元串
強制類型轉換、利用js變數弱類型轉換
1.強制類型轉換: String(value)——把給定的值轉換成字元串。
2.利用js變數弱類型轉換:數字+字元串 // 123+"456"------>"123456"