為什么變量在FOR循環外面是一個一個刪除的,到了FOR循環里面就一次兩個了?
<!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");//獲取div
? ?var date=content.childNodes[i];//變量date為div中第i+1個子節點
? ?for(i=0;i<content.childNodes.length;i++)? //for循環,i小于div中子節點的長度
? ?{
? ? ?
? ? ? ? ? content.removeChild(date)? ?//刪除diiv中第i+1個子節點
? ?}
?
??
}
</script>
<button onclick="clearText()">清除節點內容</button>
</body>
</html>
2019-05-16
首先,你貼出來的整段代碼里有一個錯,使用的i沒有定義,我不知道你是怎么運行成功的。
然后,如果你說的變量date放在代碼外面是如下:
var i=0;
var date=content.childNodes[i];
? ?for(i=0;i<content.childNodes.length;i++)
? ?{
? ? ? ? content.removeChild(date) ;
? ?}
那么一行一行的刪除則是因為date在外面定義時已經固定為content的第一個子節點了,所以你每次只能刪一個。
最后,將變量date放在代碼循環里面是如下:
? ?for(var i=0;i<content.childNodes.length;i++)
? ?{
? ? ? ?var date=content.childNodes[i];
? ? ? ? content.removeChild(date) ;
? ?}
那么兩個兩個的刪除則是因為原順序為 html? php? javascript? jquery? java,i=0時,刪了html,然后順序變為php? javascript? jquery? java,故i=0時,則會刪除Javascript,依次推下去。