错误
Uncaught TypeError: Cannot set properties of undefined (setting ‘innerHTML‘)
意思是你设置innerHTML的这个对象没有定义。
分析原因
- js写在html的前面,导致读取js相应结点的时候html还没有加载出来对象,所以无法识别
- 注意nodeChild[]的定义。返回的数组是包含文本节点以及元素节点的。那么如果访问到文本节点,还要设置他的innerHTML,当然会出错。所以注意换行符也算是一个节点。具体请看下面的例子。
例子
<body><p id="demo">请点击按钮来获得 body 元素子节点的相关信息。</p>
<button onclick="myFunction()">试一下</button>
</body>
那么实际上
元素这个节点的childNodes数组是什么呢?如果遍历数组并输出每个节点的nodename,答案是这样的:
P
#text
BUTTON
#text
SCRIPT
#text
P
#text
其中的#text表示的是文本节点,在这个例子里是换行符。
所以在访问的时候注意别访问到了文本节点的innerHTML了。