第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

For 循環(huán)停止條件,用于在代碼運(yùn)行時(shí)動(dòng)態(tài)填充的數(shù)組

For 循環(huán)停止條件,用于在代碼運(yùn)行時(shí)動(dòng)態(tài)填充的數(shù)組

白衣染霜花 2023-11-11 21:46:08
我正在創(chuàng)建一個(gè)導(dǎo)航列表,每當(dāng)將新的部分元素添加到頁(yè)面時(shí),該列表就會(huì)動(dòng)態(tài)填充。我首先創(chuàng)建了一個(gè)空數(shù)組,其目的是通過(guò)對(duì)其應(yīng)用 forLoop 來(lái)連續(xù)接收頁(yè)面上添加的內(nèi)容。這是 JavaScript 代碼    var list= document.getElementById('navbar__list'); let myArray= []; //Create an empty arrayfor( let i=0; i<=myArray.length; i++){  var triggerSection= document.getElementById('section'+(1+i)); //Call section elements one by one with id=section(1+i)  myArray.push(triggerSection); //push elements to create an array that includes all sections on the page  var sectionName= myArray[i].getAttribute('data-nav'); //Call data-nav value for each item  const newItem= document.createElement('Li'); //create li elemnt inside the document object  newItem.textContent= sectionName; //pass the data-nav value as a text to the li element  newItem.setAttribute('id','item'+(1+i));  list.appendChild(newItem); //pass the li element to the  unordered list}HTML 代碼<ul id="navbar__list">      </ul><section id="section1" data-nav="Section 1" class="your-active-class"><section id="section2" data-nav="Section 2"><section id="section3" data-nav="Section 3">問(wèn)題是,當(dāng)設(shè)置如上所示的 for 循環(huán)的結(jié)束條件時(shí),它會(huì)在數(shù)組末尾添加一個(gè)值為 (null) 的額外元素,并且控制臺(tái)會(huì)生成該錯(cuò)誤“ Uncaught TypeError: Cannot read property 'getAttribute'為空”當(dāng)刪除等號(hào)以使結(jié)束條件如下 (i<myArray.length) 時(shí),不再顯示錯(cuò)誤,但創(chuàng)建的 (myArray) 返回空數(shù)組,導(dǎo)航欄上依次不顯示任何項(xiàng)目在網(wǎng)頁(yè)上。
查看完整描述

1 回答

?
手掌心

TA貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊

在數(shù)組上添加或刪除元素時(shí),不應(yīng)迭代數(shù)組。一般來(lái)說(shuō),這是一件有風(fēng)險(xiǎn)的事情,因?yàn)樗Q于編程語(yǔ)言,而且也很難理解。在這種情況下,最好使用while或do-while循環(huán)。


如果你想留在 for 循環(huán)中,你可以簡(jiǎn)單地添加一個(gè)中斷條件。


for ( let i = 0; i < myArray.length; i++){

    let triggerSection= document.getElementById( 'section' + ( 1 + i ));

    if ( triggerSection === null ) break;

    ...

}

相反,更好的循環(huán)終止條件可能是triggerSection === null,因?yàn)槿绻凑业皆貏tgetElementById返回。null(https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementById)


因此這應(yīng)該有效:


let i = 0;

while ( (let triggerSection = document.getElementById( 'section' + ( 1 + i ))) !== null) {



    i++;

}


查看完整回答
反對(duì) 回復(fù) 2023-11-11
  • 1 回答
  • 0 關(guān)注
  • 142 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)