Uncaught TypeError: Cannot set property 'background' of undefined,怎麼解決?
阿新 • • 發佈:2018-12-20
這個問題跟瀏覽器有關
在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’; } 兩種方法都能達到你要的效果,且解決了報錯的問題