亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

removeChild 刪除節點問題

我的作業中想打印出已刪除內容,但用教程中的辦法不行。具體代碼如下:

<!DOCTYPE HTML>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>無標題文檔</title>

</head>


<body>

<div id="content">

? <h1>html</h1>

? <h1>php</h1>

? <h1>javascript</h1>

? <h1>jquery</h1>

? <h1>java</h1>

</div>


<script type="text/javascript">

function clearText() {

? var content=document.getElementById("content");

? // 在此完成該函數

for(var i=0;i<content.childNodes.length;i++){

? ? var n = content.childNodes[i];

? ? }

? ? var d =content.removeChild(n);

? ? document.write("刪除的節點是:" + d.innerHTML);

}

</script>


<button onclick="clearText()">清除節點內容</button>




</body>

</html>

==================================

只有把document.write("刪除的節點是:" + d.innerHTML);這句中的d 改成content也就是改成原來的節點名稱才可以打出,結果雖然正確,但那個是原節點,不是現在已刪除的,不知這是怎么回事?謝謝。

正在回答

3 回答

因為源節點刪除了,但是他只是不存在DOM樹種了,但是還存在內存中,所以刪除節點之后再把刪除節點賦值為null

0 回復 有任何疑惑可以回復我~

你的這句for(var i=0;i<content.childNodes.length;i++){? var n = content.childNodes[i];?} ?執行完了后只能獲取到content最后一個子節點并放入n中,應該并不是你所希望的。應該把右括號“}”放到document.write("刪除的節點是:" + d.innerHTML);這句的后面。這樣你后面寫的用d來接收刪除的節點,再把d.innerHTML打出,就沒有錯,而不用改掉d,打出的就是已刪除但是還存在內存d中的content的子節點了。


改完后原理上沒錯,但是因為瀏覽器兼容問題,會將空白處當作文本節點,所以你那樣寫實現不了一次都刪除。至于如何再改進,建議你看下這個http://www.xianlaiwan.cn/qadetail/56371?解釋得挺詳細的,我就不多說了。


希望對你用幫助。



1 回復 有任何疑惑可以回復我~
#1

天山之路 提問者

非常感謝??!
2016-03-24 回復 有任何疑惑可以回復我~
#2

鈺與宸 回復 天山之路 提問者

不客氣。
2016-03-24 回復 有任何疑惑可以回復我~

謝謝你的回答。但我不是想把內存中的數據刪除,而是想把它打印出來,就是把已刪除的項目打印出來,不知如何寫。

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

removeChild 刪除節點問題

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號