根据SitePoint(和我自己的实验),“setAttribute()”的IE实现有缺陷且不可靠。
同样根据SitePoint,name
属性是只读的。
我还有另一种方法可以在元素上设置name
属性吗?我需要这个用于单选按钮。如果可能的话,我想要一个没有jQuery的解决方案,因为我目前没有使用该库。
提前致谢!
答案 0 :(得分:12)
这对我有用
alert(document.getElementById('testInput').name);
document.getElementById('testInput').name = 'someName';
alert(document.getElementById('testInput').name);
使用
<input type="radio" name="test" id="testInput" />
答案 1 :(得分:4)
Sitepoint 谎言正在谈论'name'的不同用法(参见Anthony的评论)。它不是只读的,只是存在一个长期的IE错误(直到v7),在表单字段上设置'name'只是部分有效。特别是单选按钮不能正确接受它。
Microsoft认可的解决方案as detailed here将使用IE的createElement调用版本的可怕错误来同时设置属性:
var radio= document.createElement('<input type="radio" name="test" value="a" />');
可能更好的方法就是使用好的旧的innerHTML,例如:
var div= document.createElement('div');
div.innerHTML= '<input type="radio" name="test" value="a" />';
var radio= div.firstChild;
答案 2 :(得分:1)
您是否尝试过为 name
元素分配新名称?我不确定跨浏览器是怎样的,但是它与支持DOM级别1的任何东西都有效。
我不确定你为什么要使用setAttribute来执行此操作?
答案 3 :(得分:0)
name属性不是只读输入元素。
请参阅the spec。
答案 4 :(得分:0)
查看W3C DOM Compatibility - Core,您可以尝试使用setAttributeNode()而不是setAttribute()。它可能适用于IE 6及更高版本。
答案 5 :(得分:0)
IE DOM不允许我在运行时更改名称属性。但是,使用jQuery进行更新 name属性适用于IE。我在IE9上测试过。 例如,
<input id="ID0E2B" name="Field2" value="3" type="radio" />
$("#ID0E2B").attr("name", newName);
答案 6 :(得分:0)
为什么不使用setAttribute("name", yourValue)
则效果很好。