国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JavaScript > 正文

html5中JavaScript removeChild 刪除所有節點

2020-03-24 18:19:50
字體:
來源:轉載
供稿:網友
假設div里有這么些內容:

復制代碼代碼如下:
!DOCTYPE html
html
head
meta http-equiv="Content-Type" content="text/html;charset=GBK"
title iScroll demo: simple /title
script type="text/javascript"
function deleteData(){
}
/script
style type="text/css" media="all"
body,ul,li {
padding:0;
margin:0;
border:0;
}
body {
font-size:12px;
-webkit-user-select:none;
-webkit-text-size-adjust:none;
font-family:helvetica;
}
/style
/head
body
div input type="submit" name="button" id="button" value="刪除li節點" / /div
div
ul id="thelist"
li Pretty row 1 /li
li Pretty row 2 /li
li Pretty row 3 /li
li Pretty row 4 /li
li Pretty row 5 /li
li Pretty row 6 /li
li Pretty row 7 /li
li Pretty row 8 /li
li Pretty row 9 /li
li Pretty row 10 /li
li Pretty row 40 /li
/ul
/div
/body
/html

現在要通過JavaScript的功能,將它們清空。

雖然可以通過一句代碼直接實現:

document.getElementById( content ).innerHTML=

但是本文里主要討論 removeChild 函數

很想當然地以為借助下面的代碼就能完成:

復制代碼代碼如下:
function deleteData(){
var el = document.getElementById('thelist');
var liNodes = document.getElementsByTagName("li");
alert(liNodes.length);
for(var i = 0; i liNodes.length; i++){
alert("刪除"+i+" liNodes[i]="+ liNodes[i]);
el.removeChild(liNodes[i]);
// -- el.removeChild(liNodes[i]);
}
}

沒想到,點擊了按鈕后,竟然只清除掉1、3、5...,而2、4、6....竟然沒有消失,

問題從一開始就產生了:

刪除掉第一個節點后,后面節點的順序全部發生了變化:原來的第二個節點往前蹭,成為新的第一個節點;原來的第三個節點,成為第二個節點

于是呢,接下來原本是要刪除第二個節點的,卻將最原始的第三個節點給刪除掉了。

最終,并沒有全部刪除,只刪除掉1、3、5,留下了2、4、6。

語法沒有錯誤,但是得不到所要的結果,這就是算法上面的錯誤!該如何修正呢?

順序刪除 不行,那就 逆序刪除 吧。將 for 語句修改一下:

復制代碼代碼如下:
function deleteData(){
var el = document.getElementById('thelist');
var liNodes = document.getElementsByTagName("li");
alert(liNodes.length);
for(var i = liNodes.length-1; i i--){
alert("刪除"+i+" liNodes[i]="+ liNodes[i]);
el.removeChild(liNodes[i]);
// -- el.removeChild(liNodes[i]);
}
}

試試吧,成功了!還可以使用下面方法:

復制代碼代碼如下:
function deleteData() {
var el = document.getElementById('thelist');
var liNodes = document.getElementsByTagName("li");
alert(liNodes.length);
for (var i=0;i el.childNodes.length;i++){
var childNode = el.childNodes[0]; //總是刪除第一個,是不是更簡單
el.removeChild(childNode);
}
}

完成代碼如下所示:

復制代碼代碼如下:
!DOCTYPE html
html
head
meta http-equiv="Content-Type" content="text/html;charset=GBK"
title iScroll demo: simple /title
script type="text/javascript"
function initData(){
var el = document.getElementById('thelist');
var liNodes = document.getElementsByTagName("li");
alert(liNodes.length);
for(var i = liNodes.length-1; i i--){
alert("刪除"+i+" liNodes[i]="+ liNodes[i]);
el.removeChild(liNodes[i]);
// -- el.removeChild(liNodes[i]);
}
}
/script
style type="text/css" media="all"
body,ul,li {
padding:0;
margin:0;
border:0;
}
body {
font-size:12px;
-webkit-user-select:none;
-webkit-text-size-adjust:none;
font-family:helvetica;
}
/style
/head
body
div input type="submit" name="button" id="button" value="刪除li節點" / /div
div
ul id="thelist"
li Pretty row 1 /li
li Pretty row 2 /li
li Pretty row 3 /li
li Pretty row 4 /li
li Pretty row 5 /li
li Pretty row 6 /li
li Pretty row 7 /li
li Pretty row 8 /li
li Pretty row 9 /li
li Pretty row 10 /li
li Pretty row 40 /li
/ul
/div
/body
/html
html教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 兴安盟| 毕节市| 郑州市| 白玉县| 乾安县| 张北县| 邻水| 内乡县| 依兰县| 怀来县| 阜平县| 华容县| 洞头县| 辰溪县| 呈贡县| 清原| 巴楚县| 新民市| 阿瓦提县| 黎城县| 高邑县| 贡嘎县| 亳州市| 星座| 卢湾区| 崇州市| 称多县| 林西县| 上虞市| 镇原县| 策勒县| 股票| 延安市| 铜川市| 荆门市| 浮梁县| 林周县| 铜山县| 周宁县| 濉溪县| 新闻|