这些代码有什么区别?

Kar*_*ngh 3 javascript

<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>
Run Code Online (Sandbox Code Playgroud)

在上面的代码我们正在使用

alert(val[0].value);

alert(window.txtName.value);
Run Code Online (Sandbox Code Playgroud)

这两种从对象中获取价值的方法.两种方式之间有什么区别,哪种方式最好.

bob*_*nce 9

alert(window.txtName.value);
Run Code Online (Sandbox Code Playgroud)

这是错误的方式,只适用于IE.IE将所有命名和IDd元素复制到属性中window,因此也复制到全局变量中,这会导致各种问题.不要依赖于此.

这样做的更好方法是:

alert(document.forms[0].elements.txtName.value);
Run Code Online (Sandbox Code Playgroud)

假设input是在第一<form>页上.您还可以使用表单名称(如果有):

alert(document.forms.someform.elements.txtName.value);
Run Code Online (Sandbox Code Playgroud)

并且还可以缩短:

alert(document.someform.txtName.value);
Run Code Online (Sandbox Code Playgroud)

虽然我不建议这样做,因为你更有可能在名字和财产之间发生冲突.

这个:

alert(document.getElementsByName('txtName')[0].value);
Run Code Online (Sandbox Code Playgroud)

没关系,但是既然你已经有了id='txt'输入,那么使用它会更简单,更快,而不是依赖于非唯一name属性:

alert(document.getElementById('txt').value);
Run Code Online (Sandbox Code Playgroud)