我可以使用JavaScript设置';名称';属性

我可以使用JavaScript设置';名称';属性,javascript,dom,internet-explorer-7,cross-browser,Javascript,Dom,Internet Explorer 7,Cross Browser,根据(以及我自己的实验),“setAttribute()”的IE实现有缺陷且不可靠 同样根据,name属性是只读的 是否有其他方法可以设置元素的name属性?我需要这个和单选按钮一起使用。如果可能的话,我想要一个没有jQuery的解决方案,因为我目前没有使用这个库 提前谢谢 输入元素的name属性不是只读的 请参阅。您是否尝试过简单地为元素name属性指定一个新名称?我不确定如何跨浏览器,但它应该与任何支持DOM级别1的东西一起工作 我不知道为什么要使用setAttribute来执行此操作?Si

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

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

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


提前谢谢

输入元素的name属性不是只读的


请参阅。

您是否尝试过简单地为元素
name
属性指定一个新名称?我不确定如何跨浏览器,但它应该与任何支持DOM级别1的东西一起工作

我不知道为什么要使用setAttribute来执行此操作?

Sitepoint liesis正在讨论“name”的不同用法(参见Anthony的评论)。它不是只读的,只是有一个长期存在的IE bug(直到v7),在表单字段上设置“name”只是部分有效。单选按钮尤其不能正确地接受它

微软认可的解决方案是使用IE版本的createElement调用的一个可怕的错误特性来同时设置属性:

var radio= document.createElement('<input type="radio" name="test" value="a" />');
var radio=document.createElement(“”);
可能更好的方法是使用好的旧innerHTML,例如:

var div= document.createElement('div');
div.innerHTML= '<input type="radio" name="test" value="a" />';
var radio= div.firstChild;
var div=document.createElement('div');
div.innerHTML='';
var无线电=分区第一个孩子;
这对我很有效

alert(document.getElementById('testInput').name);
document.getElementById('testInput').name = 'someName';
alert(document.getElementById('testInput').name);


查看,您可以尝试使用setAttributeNode()而不是setAttribute()。它可以在IE6和更高版本上工作。

IE DOM不允许我在运行时更改name属性。但是,使用jQuery来更新 name属性在IE上工作。我在IE9上测试过。 比如,

<input id="ID0E2B" name="Field2" value="3" type="radio" />
$("#ID0E2B").attr("name", newName);

$(“#ID0E2B”).attr(“名称”,新名称);

为什么不使用
setAttribute(“name”,yourValue)
它工作得非常好。

站点点引用指向属性对象的name属性,而不是HTMLInputELement的name属性,您需要将鸡蛋与鸡蛋进行比较。这看起来像是将元素插入dom,你不能在IE中设置name属性。因此,这会创建一个新的radio元素,如果你需要的话,可以用它替换现有的radio元素。您可以在原始收音机的父级上设置innerHTML,如果这是您想要的;问题中没有足够的信息可以说。这似乎是IE中唯一可靠的方法;我发布了一些这样做的代码,并为我工作。如果我先看到这个答案,我就不会把它贴出来了。它部分有效。但是,它不会更改按钮所属的单选组,因此,如果在同一页面上有另一个名为someName的输入,它们将保持独立,如果有另一个名为test的输入,则它仍将与新的someName控件独占。此外,如果您尝试使用getElementsByName或form.someName/form.elements.someName检索“someName”,IE将无法找到它。可能会有更多像这样奇怪的互动;一般来说,最好避免这种情况。jQuery是如何做到的?
<input id="ID0E2B" name="Field2" value="3" type="radio" />
$("#ID0E2B").attr("name", newName);