這篇文章主要介紹了JavaScript怎么實(shí)現(xiàn)DOM樹的深度優(yōu)先遍歷和廣度優(yōu)先遍歷,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)公司專注于壽縣網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供壽縣營(yíng)銷型網(wǎng)站建設(shè),壽縣網(wǎng)站制作、壽縣網(wǎng)頁(yè)設(shè)計(jì)、壽縣網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務(wù),打造壽縣網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供壽縣網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。深度優(yōu)先遍歷// 非遞歸,首次傳入的node值為DOM樹中的根元素點(diǎn),即html // 調(diào)用:deep(document.documentElement) function deep (node) { var res = []; // 存儲(chǔ)訪問(wèn)過(guò)的節(jié)點(diǎn) if (node != null) { var nodeList = []; // 存儲(chǔ)需要被訪問(wèn)的節(jié)點(diǎn) nodeList.push(node); while (nodeList.length > 0) { var currentNode = nodeList.pop(); // 當(dāng)前正在被訪問(wèn)的節(jié)點(diǎn) res.push(currentNode); var childrens = currentNode.children; for (var i = childrens.length - 1; i >= 0; i--) { nodeList.push(childrens[i]); } } } return res; } // 使用遞歸 var res = []; // 存儲(chǔ)已經(jīng)訪問(wèn)過(guò)的節(jié)點(diǎn) function deep (node) { if (node != null) { // 該節(jié)點(diǎn)存在 res.push(node); // 使用childrens變量存儲(chǔ)node.children,提升性能,不使用node.children.length,從而不必在for循環(huán)遍歷時(shí)每次都去獲取子元素 for (var i = 0, childrens = node.children; i < childrens.length; i++) { deep(childrens[i]); } } return res; }廣度優(yōu)先遍歷
// 遞歸 var res = []; function wide (node) { if (res.indexOf(node) === -1) { res.push(node); // 存入根節(jié)點(diǎn) } var childrens = node.children; for (var i = 0; i < childrens.length; i++) { if (childrens[i] != null) { res.push(childrens[i]); // 存入當(dāng)前節(jié)點(diǎn)的所有子元素 } } for (var j = 0; j < childrens.length; j++) { wide(childrens[j]); // 對(duì)每個(gè)子元素遞歸 } return res; } // 非遞歸 function wide (node) { var res = []; var nodeList = []; // 存儲(chǔ)需要被訪問(wèn)的節(jié)點(diǎn) nodeList.push(node); while (nodeList.length > 0) { var currentNode = nodeList.shift(0); res.push(currentNode); for (var i = 0, childrens = currentNode.children; i < childrens.length; i++) { nodeList.push(childrens[i]); } } return res; }
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享JavaScript怎么實(shí)現(xiàn)DOM樹的深度優(yōu)先遍歷和廣度優(yōu)先遍歷內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián)建站,關(guān)注創(chuàng)新互聯(lián)網(wǎng)站制作公司行業(yè)資訊頻道,遇到問(wèn)題就找創(chuàng)新互聯(lián)建站,詳細(xì)的解決方法等著你來(lái)學(xué)習(xí)!
名稱欄目:JavaScript怎么實(shí)現(xiàn)DOM樹的深度優(yōu)先遍歷和廣度優(yōu)先遍歷-創(chuàng)新互聯(lián)
標(biāo)題URL:http://vcdvsql.cn/article42/dsdoec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、網(wǎng)站維護(hù)、搜索引擎優(yōu)化、品牌網(wǎng)站制作、網(wǎng)站改版、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容