【发布时间】:2011-12-08 05:14:27
【问题描述】:
所以我正在学习操作 DOM,我注意到一件有趣的事情:
假设我想通过使用“.”来设置元素的name 属性。点符号:
element.name = "someName";
console.log(document.getElementsByName("someName")[0]); // returns "undefined"??
但是,如果我使用 document.setAttribute() 方法,它可以正常工作:
element.setAttribute("name", "someName");
console.log(document.getElementsByName("someName")[0]); // returns the element like it should.
不知道为什么点符号方法在第一种情况下不起作用。
为什么会这样?
【问题讨论】:
-
一般尽量避免使用
getElementsByName -
为什么要避免使用 getElementsByName?
-
属性可以使用点符号来访问,如果您希望这样访问它们。如果您希望使用点表示法访问属性,您需要参考 obj.attributes.attributeName 来检索属性和 obj.attributes.attributeName.value 来操作其值。与 setAttribute 或 getAttribute 相比,它是冗长的。并且不推荐作为解决方案,但无论如何,对您的问题“为什么点表示法在第一种情况下不起作用”的完整答案 - 必须包括“它确实如此。您只是在错误的地方寻找属性以及他们的价值观。”
标签: javascript setattribute getelementsbyname