我可以使用JavaScript来设置“名称”属性?(Can I use JavaScript to

2019-07-04 06:13发布

根据SitePoint (和我自己的实验),在IE中执行“的setAttribute()”是越野车和不可靠的。

此外,根据SitePoint的name属性为只读。

有另一种方式我可以设置name上的元素属性? 我需要这与单选按钮使用。 如果可能的话,我想没有一个jQuery的解决方案,我目前没有使用磁带库。

提前致谢!

Answer 1:

Sitepoint 在谈论“名”的不同的使用(见安东尼的评论)。 它不是只读的,它只是有一个长期的IE漏洞(最多V7),其中设置在表单字段“名称”只是部分有效。 特别是单选按钮不能正确接受。

微软认可的解决方案, 因为这里详述是使用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;


Answer 2:

这为我工作

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

<input type="radio" name="test" id="testInput" />


Answer 3:

您是否尝试过简单地分配一个新的名称为元素name属性? 我不知道这是浏览器的跨如何,但它shold与任何支持DOM 1级的工作。

我不知道你为什么会使用的setAttribute来执行呢?



Answer 4:

name属性不仅为输入元素读取。

见规范 。



Answer 5:

望着W3C DOM兼容性-核心 ,你可以尝试使用使用setAttributeNode()代替的setAttribute()。 它可以在IE 6和上述方式工作。



Answer 6:

IE浏览器的DOM不允许我运行时更改名称属性。 然而,使用jQuery更新的name属性上的IE浏览器的工作原理。 我对IE9测试。 举些例子,

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


文章来源: Can I use JavaScript to set the 'name' attribute?