由'形式'引起的JS异常元件

时间:2014-01-02 18:13:11

标签: javascript html forms tagname

今天我遇到了这个问题,它让我很烦恼...... 我正在维护一个JS项目,并且有一条线:

node.tagName

其中node.nodeType1。 显然,代码想要获取此元素的标记名称,它似乎适用于99.99%的网页......

可悲的是,当我在http://codeforces.com/problemset/problem/377/D上执行脚本时,它不起作用。原因是有一个form元素,其子节点具有属性name="tagName" enter image description here

具有form属性的name元素的子节点可以像:node.NAME_VALUEreference)一样访问,因此node.tagName将获得其子名称属性为tagName,而不是节点的标记名form

有没有人遇到过这个问题?除了检查节点是否为form之外,还有其他解决方案吗?


编辑1:
我为jQuery here解决了一个错误。我这样做是因为jQuery可以更容易地为.prop("tagName")修复此问题,而不是让所有浏览器解决此问题。
顺便说一句,我认为没有人应该使用tagNamenodeName之类的内容作为HTMLInputElement的name值。

2 个答案:

答案 0 :(得分:0)

我不是这方面的专家,所以这可能不是你能得到的最好的答案,但从来没有......我能想到两个解决方案:

1)如果您可以确定输入名称不存在,请使用nodeName。

2)使用element.clone(false).tagName(例如document.getElementById('someid').clone(false).tagName

答案 1 :(得分:0)

如果node.tagName不适合您,请使用node.nodeName

我在代码中使用node.nodeName