当前位置: 移动技术网 > IT编程>开发语言>JavaScript > javascript下一种表单元素获取方法存在的问题

javascript下一种表单元素获取方法存在的问题

2019年07月19日  | 移动技术网IT编程  | 我要评论
一. 测试环境
浏览器: 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,那么无论文档的最后修改日期是什么,它都会绕过缓存,从服务器上重新下载该文档。就是传说中的强制刷新。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网