这里面总是提示 Uncaught TypeError: Cannot set property 'background' of undefined,怎么解决?
答案:1 悬赏:20
解决时间 2021-03-29 09:30
- 提问者网友:星軌
- 2021-03-29 04:23
这里面总是提示 Uncaught TypeError: Cannot set property 'background' of undefined,怎么解决?
最佳答案
- 二级知识专家网友:琴狂剑也妄
- 2021-03-29 04:47
你好,这个问题跟浏览器有关
在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';
}两种方法都能达到你要的效果,且解决了报错的问题
希望是你想要的结果,望采纳~~
在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';
}两种方法都能达到你要的效果,且解决了报错的问题
希望是你想要的结果,望采纳~~
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |