给定这样的 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/