提示:Cannot set property 'height' of undefined


<html>
<head>
<script>
window.onload=function(){
var oUl = document.getElementById("ul1");
var i=0;
for(i=0;i<oUl.childNodes.length;i++){
oUl.childNodes[i].style.height=30+'px';
}
}
</script>
<style type='text/css'>
</style>
</head>
<body>
<ul id='ul1'>
<li>jason</li>
<li>rekken</li>
<li>guo</li>
</ul>
</body>
</html>

運行之后報Cannot set property 'height' of undefined錯誤

IE下childNodes取得的節點不包括文本節點,而在Chrome或Firefox下得到的節點包括文本節點,具體看下面代碼的執行結果:

var oUl = document.getElementById("ul1");
console.log(oUl.childNodes); // [text, li, text, li, text, li, text]

在代碼中,當循環childNodes的時候,第一個節點是textNode,不具備style屬性,所以會報'undefined';

常見的解決方法有兩種:

// 方法一
var oUl = document.getElementById("ul1");
var i=0;
var children = oUl.childNodes;
for(i = 0; i < children.length; i++){
    if (children[i].nodeType === 1) {
        children[i].style.background = 'red';
    }
}
 
// 方法二
var oUl = document.getElementById("ul1");
var i=0;
var children = oUl.children;
for(i = 0; i < children.length; i++){
    children[i].style.background = 'red';
}

兩種方法都能達到想要的效果,且解決了報錯的問題


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM