发布于 2016-09-14 11:04:36 | 108 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的Javascript教程,程序狗速度看过来!

JavaScript客户端脚本语言

Javascript 是一种由Netscape的LiveScript发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如Perl,遗留的速度问题,为客户提供更流畅的浏览效果。


在工作中, 我常看到这样一种获取表单元素的方法:var eles = document.forms['表单名'].elements['元素名']; 如果对获取到的结果进行遍历操作, 那么, 我要告诉你: 小心, eles.length的值可能为undefined.
一. 测试环境
浏览器: IE6+, FF 3.5.5, Opera 10, Chrome 4.0.249, Safari 4.0.3

二. 例子
 
<form name="test-form" action="" method=""> 
<input type="checkbox" name="kk"> 
<form> 
<script type="text/javascript"> 
var oForm = document.forms['test-form'], 
eles = oForm.elements['kk']; 
alert(eles.length); // undefined 
alert(eles.nodeType); // 1 
</script> 

三. 解决方法(我想到的方法是改变获取方式, 基于YUI)
 
<script type="text/javascript"> 
var oForm = document.forms['test-form'], 
eles = YAHOO.util.Dom.getElementsBy(function(el) { 
return el.type === 'checkbox' && el.name === 'kk'; 
}, 'input', oForm); 
alert(eles.length); // 1 
</script> 



document.formname.inputname

这个问题我之前已经遇到过一次了,但是这次又忘记了,依然又犯错了,所以我必须要记录一下。

看一下这个例子:
 
<form name="hehe"> 
<input type="checkbox" name="haha" /> 
</form> 
<form name="hehe2"> 
<input type="checkbox" name="haha" /> 
<input type="checkbox" name="haha" /> 
</form> 
<script type="text/javascript"> 
document.write(document.hehe.haha.length); 
document.write('<br />'); 
document.write(document.hehe2.haha.length); 
</script> 

演示

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]


在获取表单的input时,我一般都习惯这么做,但是这样做往往就出现问题了,因为很多时候我会去对比已选的checkbox和所有的 checkbox数量是否相等,但是只有一个的时候就会出错,因为它返回的就是checkbox本身,并没有length这个属性,所以我们需要先判断所取到的input是否有length属性以便进一步操作。

另外记录下location.reload(),它还有一个可选参数,true或者false,如果省略或者设置为false,它就会用HTTP头 If-Modified-Since来检测服务器上的文档是否已改变。如果文档已改变,reload()会再次下载该文档。如果文档未改变,则该方法将从缓存中装载文档。这与用户单击浏览器的刷新按钮的效果是完全一样的。如果设置为true,那么无论文档的最后修改日期是什么,它都会绕过缓存,从服务器上重新下载该文档。就是传说中的强制刷新。

最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务