javascript - 使用 ID 或对象访问 DOM 元素哪个更好?

标签 javascript html object

给定这样的 HTML:

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

使用 document.getElementById,我会像这样访问名为 myName` 的输入:

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

但是,相反,我知道我可以做到,而且我更喜欢它:

var getName = document.myForm.myName.value;

这第二种方法有办法吗?而且,可以使用 myForm.myName 还是应该使用 getElementById

最佳答案

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

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

至于您应该做什么(我从您询问的标签中特别假设了 JavaScript 代码):任何一种方法都可以。第一个想法(就其使用 getElementById 而言)更好,因为文档结构的更改不会破坏它,但如果是你来清理碎玻璃,那就是你的表演.

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

看看jQuery如果您还不知道;它和类似的库使 JavaScript 成为一种更适合开发的语言。

关于javascript - 使用 ID 或对象访问 DOM 元素哪个更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9106643/

相关文章:

Javascript:使用 trought post 方法内的对象发送对象

javascript - JQuery:更新表内容花费太长时间

javascript - 线性或 (n log n) 时间复杂度

html - Chrome 在低 DPI 和高 DPI 显示器上以不同方式重绘滚动条上的 div

html - IE6 中的下拉菜单 "blinking"

ios - 我们可以[ self 释放]吗?

javascript - 如何在 JavaScript 中获取对当前焦点表单字段的引用?

javascript - Jquery Replacewith() div 被添加而不是被替换

javascript - 当浏览器窗口改变时改变 Bootstrap 按钮组的类

javascript - 通过名称定位图层后查找图层的索引#