我正在尝试复制元素树。在这个过程中,我必须更改一些参数,如名称,参数传递给分配给原始元素的某个函数。 如何设置onclick和元素的其他方法。
例如:
<table>
<tr>
<td>
<select name="abc(0)" onclick="func(0)">
<option> 1</option>
</select>
</td>
<td>
<input type="text" onkeypress="keyp(0)" name="text(0)">
</td>
</tr>
</table>
我尝试了各种方法,如cloneNode(true),并尝试重命名节点名称,并尝试更改分配的方法参数。我也尝试通过document.createElement创建元素,但在IE中,它没有更改名称。在第二个选项中,它甚至没有设置名称。方法也没有改变,在第二种方法中它甚至没有被分配。
有人可以让我知道我在哪里做错了。
谢谢&amp;问候 阿米特
答案 0 :(得分:0)
我认为最好的选择是摆脱on_event_属性并重构你的javascript,以便它使用事件监听器。这样,处理事件的代码将与标记完全分开,克隆不会导致任何问题。
请注意,您必须使用委派事件,因为必须为最初页面上不存在的克隆元素调用事件处理程序。
答案 1 :(得分:0)
IE中唯一无法更改的属性是已添加到表单的控件类型,您可以更改其他所有内容。请注意,在所有浏览器中,克隆元素都保留内联侦听器,使用 attachEvent 添加侦听器的元素也是如此(所有库都用于支持 attachEvent 而不是的addEventListener )。
以下代码段显示可以更改表单元素的name属性(在IE 8标准模式下测试),并为克隆节点保留内联侦听器。
<form id="f0">
<input type="text" name="inp0" onclick="alert(this.name);">
<input type="button" value="Do clone" onclick="
var el = this.form.inp0.cloneNode(true);
this.form.appendChild(el);
el.name = 'inp1';
">
</form>