【发布时间】:2014-01-20 06:20:08
【问题描述】:
今天我遇到了这个问题,这让我很恼火...... 我在维护一个JS项目,有一行:
node.tagName
其中node.nodeType 是1。
显然代码想要获取这个元素的标签名称,它似乎适用于 99.99% 的网页......
遗憾的是,当我在http://codeforces.com/problemset/problem/377/D 上执行脚本时,它不起作用。原因是form 元素的子节点具有name="tagName" 属性。
form 元素的子节点具有属性name 可以通过如下方式访问:node.NAME_VALUE(reference),因此node.tagName 将获得其名称属性为tagName 的子节点,而不是节点的标签姓名form。
有没有人也遇到过这个问题?除了检查节点是否为form,还有其他解决方案吗?
编辑 1:
我已经为 jQuery here 触发了一个错误。我这样做是因为 jQuery 为 .prop("tagName") 解决这个问题可能比让所有浏览器都解决这个问题要容易得多。
顺便说一句,我认为没有人应该使用像 tagName 或 nodeName 这样的东西作为 HTMLInputElement 的 name 值。
【问题讨论】:
-
你覆盖了 Node 的
tagName属性。 -
我建议不要直接使用tagName,而是“找到”名称为“tagName”的元素,这样更安全,在浏览器中更广泛接受
-
@Givi 对我来说听起来有点复杂,但值得一试。
-
@Givi 会覆盖它甚至在这里有帮助吗?还是 node.NAME_VALUE(当 NAME_VALUE == "tagName")仍然优先?
-
@nrathaus 为什么?最好避免使用 Node 属性名称作为输入名称或 id 属性的值,以及如何在没有 tagName 的情况下使用事件委托?
标签: javascript html forms tagname