JavaScript 用cloneNode方法克隆節(jié)點的代碼
很多時候我們會用for 來生成多個結(jié)構(gòu)相同的節(jié)點結(jié)構(gòu),這樣我們需要寫很多createElement、setAttribute、appendChild 等代碼。
但其實我們只需要有一個html 的模板,就可以用cloneNode 方法對已有的節(jié)點進(jìn)行克隆,包括其子節(jié)點。
以下是cloneNode 方法原型:
newElement oldElement.cloneNode(bool deep);
這個方法只有一個參數(shù)deep,布爾值,如果為true,則克隆oldElement 這個及其子節(jié)點,否則只可能這個節(jié)點本身。
返回值就是一個克隆的節(jié)點newElement。
以下是測試代碼,test.htm 和test.js 文件。
<!-- test.htm -->
<html>
<head>
<title>Test of cloneNode Method</title>
<script type="text/javascript" src="test.js"></script>
</head>
<body>
<div id="main">
<div id="div-0">
<span>Cloud018 said, </span>
<span>"Hello World!!!"</span>
</div>
</div>
</body>
</html>
Code
// test.js
window.onload = function () {
var sourceNode = document.getElementById("div-0"); // 獲得被克隆的節(jié)點對象
for (var i = 1; i < 5; i++) {
var clonedNode = sourceNode.cloneNode(true); // 克隆節(jié)點
clonedNode.setAttribute("id", "div-" + i); // 修改一下id 值,避免id 重復(fù)
sourceNode.parentNode.appendChild(clonedNode); // 在父節(jié)點插入克隆的節(jié)點
}
}
網(wǎng)頁加載的結(jié)果如下:

用Google Chrome 的開發(fā)人員工具可以看出,div-0 的節(jié)點結(jié)構(gòu)都被復(fù)制了。

而當(dāng)把cloneNode 的deep 參數(shù)設(shè)為false 的時候,僅僅div-0 這個節(jié)點本身被克隆,而他的子節(jié)點(即其內(nèi)容)是沒有被復(fù)制的。
相關(guān)文章
JavaScript實現(xiàn)添加及刪除事件的方法小結(jié)
這篇文章主要介紹了JavaScript實現(xiàn)添加及刪除事件的方法,實例總結(jié)了javascript對事件的添加及刪除的技巧,涉及javascript事件綁定的方法及瀏覽器兼容的相關(guān)注意事項,需要的朋友可以參考下2015-08-08
javascript+css3 實現(xiàn)動態(tài)按鈕菜單特效
這篇文章主要介紹了javascript+css3 實現(xiàn)動態(tài)按鈕菜單特效的相關(guān)資料,需要的朋友可以參考下2016-02-02
利用Axios實現(xiàn)無感知雙Token刷新的詳細(xì)教程
在現(xiàn)代系統(tǒng)中,Token認(rèn)證已成為保障用戶安全的標(biāo)準(zhǔn)做法,然而,盡管許多系統(tǒng)采用了這種認(rèn)證方式,卻在處理Token刷新方面存在不足,導(dǎo)致用戶體驗不佳,許多系統(tǒng)未能提供一種無縫的、用戶無感知的Token刷新機(jī)制,所以本文介紹了教你用Axios實現(xiàn)無感知雙Token刷新2024-08-08
js實現(xiàn)瀏覽器的各種菜單命令比如打印、查看源文件等等

