2

这是我的问题的非常简化的版本:

我有什么:

<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 未知的运行时错误

4

2 回答 2

1

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 中测试)。
它使用条件注释来定位微软的 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);

祝你好运!!

于 2012-08-22T16:47:59.167 回答
1

在早期的 IE 版本中,属性/属性是古怪的name

(从这个问题

于 2012-08-22T16:49:46.593 回答