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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

求大神解答

求大神解答

皓韻兒 2016-08-20 12:07:09
???? ???? ????html ????php ????javascript ????jquery ????java ????()?{ ????????=.(); ????????=?.; ????????(=?;?<?.;?++){ ????????????=?[]; ????????????.(); ????????} ????} ()為什么兩個for循環執行的結果不一樣?
查看完整描述

3 回答

已采納
?
stone310

TA貢獻361條經驗 獲得超191個贊

for(var i=content.childNodes.length-1;i>=0;i--){ 先說說這種寫法發生了什么,

當你點擊觸發,i的值是content.childNodes.length-1,條件是只要i>=0,就可以執行語句,因此這里i能執行到i=0;

因此這種寫法下點擊按鈕所有節點全部刪除

第二種寫法:for(var i = 0; i < content.childNodes.length; ++i){

點擊觸發,i開始是0,條件是i要小于元素節點的個數,就是這里發生了問題,

i=0;length=11,執行語句刪除節點,繼續

i=1;length=10,執行語句刪除節點,繼續

i=2;length=9,執行語句刪除節點,繼續

i=3;length=8,執行語句刪除節點,繼續

i=4;length=7,執行語句刪除節點,繼續

i=5;length=6,執行語句刪除節點,繼續

i=6;length=5,條件不滿足,停止!

再次點擊,

i=0 ; length=5............

因此執行效果是不同的

查看完整回答
反對 回復 2016-08-21
?
皓韻兒

TA貢獻86條經驗 獲得超114個贊

這是代碼。。

<!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=content.childNodes.length-1;i>=0;i--){
? ? ? ? ? ?for(var i = 0; i < content.childNodes.length; ++i){
? ? ? ? ? ?var childNode = content.childNodes[i];
? ? ? ? ? ?content.removeChild(childNode);
? ? ? ?}

? ?}
</script>

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

</body>
</html>


查看完整回答
反對 回復 2016-08-21
?
摩訶迦葉

TA貢獻146條經驗 獲得超54個贊

?你這是什么?

查看完整回答
反對 回復 2016-08-20
  • 皓韻兒
    皓韻兒
    <!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=content.childNodes.length-1;i>=0;i--){ for(var i = 0; i < content.childNodes.length; ++i){ var childNode = content.childNodes[i]; content.removeChild(childNode); } } </script> <button onclick="clearText()">清除節點內容</button> </body> </html>
  • 摩訶迦葉
    摩訶迦葉
    用//for(var i=content.childNodes.length-1;i>=0;i--){ 是對的! 用for(var i = 0; i < content.childNodes.length; ++i)是錯的。 因為content.childNodes.length是在不斷減少的。比如,有10個子節點。這時是i<10,你在循環中刪除一個子節點,就剩9個子節點了,這時的判斷條件就變成了i<9;這樣這個for循環時不會執行10次,也就不能刪除所有子節點了。
  • 3 回答
  • 0 關注
  • 1413 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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