我创建了一个按钮,允许您克隆元素树。这是我的代码:javascript克隆元素树并更改克隆中的所有ID
function add_party(number) {
var n = number.replace("party", "");
var newparty = document.getElementById("party"+n);
var div = document.createElement("div");
var con = document.getElementById("party1").innerHTML;
document.createElement("div");
div.id = 'party' + ++n;
div.innerHTML = con;
newparty.parentNode.insertBefore(div, newparty.nextSibling);
renumberDivs(div, n, "div","party");
}
这是我的HTML:
<div id="party1">
<h1>Party 1</h1>
<table>
<tbody>
<tr>
<th>party name:</th>
<td><input type="text" name="name1" value="some name"></td>
</tr>
<tr>
<th>party time:</th>
<td><input type="text" name="time1" value="some time"></td>
</tr>
</tbody>
</table>
<input type="button" onclick="add_party(this.parentNode.id)" value="add party">
</div>
然而,由于每个元素都有一个唯一的ID或名称克隆不应该有相同的ID或名称。相反,新的编号和名称应当由1加起来那么克隆树应该是这样的:
<div id="party2">
<h1>Party 2</h1>
<table>
<tbody>
<tr>
<th>party name:</th>
<td><input type="text" name="name2" value=""></td>
</tr>
<tr>
<th>party time:</th>
<td><input type="text" name="time2" value=""></td>
</tr>
</tbody>
</table>
<input type="button" onclick="add_party(this.parentNode.id)" value="add party">
</div>
此外,输入值应该是空的克隆。我怎样才能做到这一点与JavaScript? (请不要jQuery)。
谢谢。
编辑:
此代码更新计数数字,所以他们总是出现在顺序:
function renumberDivs(el, n, tagn, ass) {
while (el = el.nextSibling) {
if (el.tagName && el.tagName.toLowerCase() == tagn){
el.id = ass + ++n;
}
}
}
我们几乎没有,但仍存在2个问题:首先,新党应该出现正下方的一个与被按下的按钮(我原来的代码不说),其次,既然我们在老派之间有了新的派对,那么统计数字就不会匹配。我将代码添加到我的问题中,将旧数字更新为新数字。不过,我不能找到一种方法来结合我的代码。 – 2014-12-05 03:31:14
@CainNuke说,你点击添加按钮,现在你有1和2.然后你点击添加按钮1,你想插入1和2之间的一方,并且你想新添加为2,并且原始2变成这是你想要的吗? – Leo 2014-12-05 03:36:24
@CainNuke答案更新后,看看它是你想要的? – Leo 2014-12-05 04:22:55