JavaScript 用cloneNode方法克隆節(jié)點的代碼
很多時候我們會用for 來生成多個結構相同的節(jié)點結構,這樣我們需要寫很多createElement、setAttribute、appendChild 等代碼。
但其實我們只需要有一個html 的模板,就可以用cloneNode 方法對已有的節(jié)點進行克隆,包括其子節(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 重復
sourceNode.parentNode.appendChild(clonedNode); // 在父節(jié)點插入克隆的節(jié)點
}
}
網(wǎng)頁加載的結果如下:

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

而當把cloneNode 的deep 參數(shù)設為false 的時候,僅僅div-0 這個節(jié)點本身被克隆,而他的子節(jié)點(即其內容)是沒有被復制的。

相關文章
解決axios會發(fā)送兩次請求,有個OPTIONS請求的問題
這篇文章主要介紹了解決axios會發(fā)送兩次請求,有個OPTIONS請求的問題,需要的朋友可以參考下2018-10-10XDomainRequest之IE8和IE9發(fā)送跨域請求拒絕訪問解決方法
這篇文章主要介紹了XDomainRequest之IE8和IE9發(fā)送跨域請求拒絕訪問解決方法,需要的朋友可以參考下2023-06-06Javascript中prototype屬性實現(xiàn)給內置對象添加新的方法
這篇文章主要介紹了Javascript中prototype屬性實現(xiàn)給內置對象添加新的方法,涉及javascript中prototype屬性的使用技巧,需要的朋友可以參考下2015-05-05淺談Javascript數(shù)據(jù)屬性與訪問器屬性
下面小編就為大家?guī)硪黄獪\談Javascript數(shù)據(jù)屬性與訪問器屬性。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-07-07