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

时间:2009-09-01 13:32:42

标签: javascript dom internet-explorer-7 cross-browser

根据SitePoint(和我自己的实验),“setAttribute()”的IE实现有缺陷且不可靠。

同样根据SitePointname属性是只读的。

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

提前致谢!

7 个答案:

答案 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)则效果很好。