使用ID或对象访问DOM元素更好吗?

时间:2012-02-02 03:10:19

标签: javascript html object

给出这样的HTML:

<body>
<form name="myForm" action="savedata.php" method="post">
  <input type="text" name="myName" />
</form>
</body>

像这样使用document.getElementById, I would acces the input called myName:

var getName = document.getElementById('myName').value;

但是,相反,我知道我可以做到这一点,我更喜欢它:

var getName = document.myForm.myName.value;

第二种方法有办法吗?并且,是否可以使用myForm.myName或我应该使用getElementById

1 个答案:

答案 0 :(得分:2)

首先,您的第一个“DOM”代码是错误的。 getElementById('myName');不会获得您想要的元素,因为它没有id - 只有name属性。同样,我不相信您的树导航第二位代码将起作用,因为元素由id存储,而不是name

现在,驳回这一点,你发布的两个例子都是“DOM”。您有一个结构化为节点对象树的文档。你正在这样导航它。前片段(如果要正确编写)只是一种更标准的访问方式。

至于应该做什么(我假设您从标签中特别询问JavaScript代码):无论哪种方式都有效。第一个想法(只要它使用getElementById)是更好的,因为你的文档结构的变化不会破坏它,但如果你是谁将扫除破碎的玻璃,那就是你的所有节目。

为了说明我的观点,我们假设您将input元素放在div中。使用getElementById的代码仍然可以使用。向下导航树的代码不会,因为它没有属性 - 可以通过新的介入元素。因此,您已将逻辑耦合到显示器 - 这就是代码味道。

如果您还不知道,请查看jQuery;它和类似的库使JavaScript成为一种更加愉快的语言。