<input type='text' id='txt' name='txtName' size='20' value='testing'/>
<script type="text/javascript" language='javascript'>
var val = document.getElementsByName('txtName');
alert(val[0].value);
alert(window.txtName.value);
</script>
在上面的代码中我们正在使用
alert(val[0].value);
alert(window.txtName.value);
这两种从对象中获取价值的方法。两种方式之间有什么区别,哪种方式最好。
答案 0 :(得分:9)
alert(window.txtName.value);
这是错误的方式,仅适用于IE。 IE将所有named和IDd元素复制到window
的属性中,因此也会将全局变量复制到其中,这会导致各种问题。不要依赖于此。
这样做的更好方法是:
alert(document.forms[0].elements.txtName.value);
假设input
位于页面的第一个<form>
中。您还可以使用表单名称(如果有):
alert(document.forms.someform.elements.txtName.value);
也可以缩短:
alert(document.someform.txtName.value);
虽然我不建议这样做,因为你更有可能在名字和财产之间发生冲突。
此:
alert(document.getElementsByName('txtName')[0].value);
没问题,但由于您已经输入了id='txt'
,因此使用它会更简单快捷,而不是依赖于非唯一name
属性:
alert(document.getElementById('txt').value);
答案 1 :(得分:2)
在第一种方法中,您找到的txtName
属性值为name
的所有元素。从结果中,您将获取第一个匹配的项目。
在第二种方法中,您依靠浏览器通过txtName
对象上的简写属性txtName
访问名称为window
的元素。
正如你所看到的,如果你知道总是只有一个元素,那么这是多余的;如果你不知道总有一个元素,那么另一个是有问题的。此外,在大多数浏览器中,第二种方法甚至都不起作用。
我不推荐任何访问项目的方式,而是通过id - document.getElementById('txt').value
进行访问 - 当您知道只有一个特定元素要访问时。
答案 2 :(得分:0)
这行代码找出整个dom,即整个html页面
var val = document.getElementsByName('txtName');
alert(val[0].value);
以下可能是错误,因为通过以下行将textName添加到窗口对象。
alert(window.txtName.value);