我可以使用JavaScript来设置'name'属性吗?

Joh*_*ski 9 javascript dom cross-browser internet-explorer-7

根据SitePoint(和我自己的实验),"setAttribute()"的IE实现是错误的和不可靠的.

同样根据SitePoint,该name属性是只读的.

有没有其他方法可以设置name元素的属性?我需要这个用于单选按钮.如果可能的话,我想要一个没有jQuery的解决方案,因为我目前没有使用该库.

提前致谢!

Zoi*_*erg 12

这对我有用

alert(document.getElementById('testInput').name);
document.getElementById('testInput').name = 'someName';
alert(document.getElementById('testInput').name);
Run Code Online (Sandbox Code Playgroud)

<input type="radio" name="test" id="testInput" />
Run Code Online (Sandbox Code Playgroud)


bob*_*nce 5

站点点谎言正在谈论 \xe2\x80\x98name\xe2\x80\x99 的不同用法(请参阅安东尼的评论)。它不是只读的,只是存在一个长期存在的 IE 错误(直到 v7),其中在表单字段上设置 \xe2\x80\x98name\xe2\x80\x99 仅部分有效。单选按钮尤其不能正确接受它。

\n\n

Microsoft 认可的解决方案(详细说明如下)是使用 IE 版本的 createElement 调用的一个可怕的错误功能来同时设置属性:

\n\n
var radio= document.createElement(\'<input type="radio" name="test" value="a" />\');\n
Run Code Online (Sandbox Code Playgroud)\n\n

也许更好的方法就是使用旧的innerHTML,例如:

\n\n
var div= document.createElement(\'div\');\ndiv.innerHTML= \'<input type="radio" name="test" value="a" />\';\nvar radio= div.firstChild;\n
Run Code Online (Sandbox Code Playgroud)\n