提示: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';
}

两种方法都能达到想要的效果,且解决了报错的问题

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  •   DOM(文档对象模型)是针对 HTML 和 XML 文档的一个 API(应用程序编程接口)。   DOM 描绘...
    霜天晓阅读 9,120评论 0 7
  • 第3章 基本概念 3.1 语法 3.2 关键字和保留字 3.3 变量 3.4 数据类型 5种简单数据类型:Unde...
    RickCole阅读 10,721评论 0 21
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,403评论 1 45
  •   DOM 1 级主要定义的是 HTML 和 XML 文档的底层结构。   DOM2 和 DOM3 级则在这个结构...
    霜天晓阅读 5,379评论 1 3
  • 一、JS前言 (1)认识JS 也许你已经了解HTML标记(也称为结构),知道了CSS样式(也称为表示),会使用HT...
    凛0_0阅读 7,775评论 0 8

友情链接更多精彩内容