javascript - JS代碼編譯成功,但是控制臺(tái)報(bào)錯(cuò),是什么問(wèn)題?
問(wèn)題描述
<ul class='ul'><li>red</li> <li>1</li> <li>1</li> <li>1</li></ul><ul class='ul ul-2'><li>red</li> <li>1</li> <li>1</li> <li>1</li></ul><script type='text/javascript'> var ulArry = document.getElementsByClassName('ul'); for (var i in ulArry) {ulArry[i].firstChild.style.color = '#FF0000'; }</script>
li的顏色已經(jīng)改變了,但是為什么控制臺(tái)還報(bào)錯(cuò)?
問(wèn)題解答
回答1:ulArry是NodeList對(duì)象,for in獲取到的不只是兩個(gè)Dom節(jié)點(diǎn),還有l(wèi)ength,item(),namedItem() 。所以運(yùn)行到length時(shí)就報(bào)錯(cuò)了。 你可以在循環(huán)中打印出 ulArry[i]看看
回答2:看圖可以知道為什么報(bào)錯(cuò),但是至于為什么 in 里面會(huì)有一個(gè)length 這個(gè)i值 得等大神解答
回答3:把代碼放到$(function(){})里試試
回答4:for in會(huì)報(bào)錯(cuò) for不會(huì),第二個(gè)ul的class不僅僅是一個(gè)哦,有兩個(gè),建議getElementsByTagName
回答5:請(qǐng)?jiān)诖_定文檔加載完后再操作
