【问题标题】:Can't change 'name' attribute of the element无法更改元素的“名称”属性
【发布时间】:2012-08-23 01:10:17
【问题描述】:

这是我的问题的相当简化的版本:

我有什么:

<td id='cell'><input name="elem_1_Name"/></td>

我想要什么:

<td id='cell'><input name="elem_1_Name"/><input name="elem_5_Name"/></td>

我尝试过的:

var elem = document.getElementById("cell").lastChild.cloneNode(true);

然后:

elem.name = elem.name.replace("1","5");

elem.name = "elem_5_Name";

elem.setAttribute("name","elem_5_Name");

最后

document.getElementById("cell").appendChild(elem);

调试时我得到了什么:

elem.name : "elem_5_Name"

!!但是!!

document.getElementById("cell").innerHTML : <input name="elem_1_Name"/><input name="elem_1_Name"/>

当我尝试直接设置 innerHTML - 我有 IE 未知的运行时错误

【问题讨论】:

标签: javascript internet-explorer dom element


【解决方案1】:
【解决方案2】:

document.getElementById("cell").innerHTML : <input name="elem_1_Name"/><input name="elem_1_Name"/>
应该是:
document.getElementById("cell").innerHTML='<input name="elem_1_Name"/><input name="elem_5_Name"/>';

这适用于跨浏览器(在 IE6 中测试)。

正如 Bergi 指出的,以下代码也应该可以工作(在 IE6 和 FF12 中测试)。
它使用条件 cmets 来定位微软的 jscript(因此是 IE):

/*@cc_on @if (@_jscript)
var elem = document.createElement('<input name="elem_5_Name">');
@else */
var elem = document.createElement("input");
elem.name = "elem_5_Name";
/* @end @*/

document.getElementById("cell").appendChild(elem);

祝你好运!!

【讨论】:

  • 我猜这只是他的调试:读取属性给出...
  • @Bergi:提问者状态:When i try to set innerHTML directly - i have IE unknown runtime error。每个浏览器都应该自然而然地对此感到窒息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-13
  • 2012-04-04
  • 2012-01-18
  • 2017-06-24
  • 1970-01-01
相关资源
最近更新 更多