1. 程式人生 > >Uncaught TypeError: Cannot set property 'background' of undefined,怎麼解決?

Uncaught TypeError: Cannot set property 'background' 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’; } 兩種方法都能達到你要的效果,且解決了報錯的問題