【发布时间】:2014-04-08 16:17:48
【问题描述】:
如果表单中的input 元素与表单的原生属性同名,则该元素将隐藏原生属性。
例如,考虑以下形式:
<form id = "test">
<input name="tagName" type="text" />
<input name="nodeName" type="text" />
</form>
form 元素的tagName 和nodeName 通常都返回FORM。但在这种情况下,下面的代码:
var f = document.getElementById("test");
console.log(f.tagName);
console.log(f.nodeName);
console.log(f["tagName"]);
console.log(f["nodeName"]);
显示:
<input name="tagName" type="text">
<input name="nodeName" type="text">
<input name="tagName" type="text">
<input name="nodeName" type="text">
是否有解决方法(重命名字段除外)? getAttribute 适用于 name、action 或 method 等属性,但不适用于 nodeName 或 tagName 等属性。
更有趣的事情:在this fiddle 我只是在记录表单本身。通常这会显示 HTML,但现在 Chrome 只记录 TypeError。
【问题讨论】:
-
嗯...
f.getAttribute('nodeName')工作正常吗?还是不支持跨浏览器(我在 Chrome 上测试过)? -
我想不出办法。
-
@Colandus 真的吗?在 chrome 中,它为我返回
null。 -
jsfiddle.net/R8x3W/1 是的,它在 Chrome 上显示
10。 -
@Colandus 哦,那不是我想要的。我希望它按原样返回
FORM。我不是在谈论属性,我是在谈论表单对象上的属性。
标签: javascript html forms