今天我遇到了这个问题,它让我很烦恼...... 我正在维护一个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
值。
答案 0 :(得分:0)
我不是这方面的专家,所以这可能不是你能得到的最好的答案,但从来没有......我能想到两个解决方案:
1)如果您可以确定输入名称不存在,请使用nodeName。
2)使用element.clone(false).tagName
(例如document.getElementById('someid').clone(false).tagName
)
答案 1 :(得分:0)
如果node.tagName
不适合您,请使用node.nodeName
。
我在代码中使用node.nodeName
。