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"