我正在尝试编写一个函数,它将循环遍历我的“main”div元素的子节点,并将元素标记名称输出到hmtl页面上,每次我尝试编译我的代码时,我最终都会得到undefined 。任何人都可以解释为什么?
可能是因为Console.log返回undefined?但是,如果它不应该我仍然从我的for循环接收某种输出?
function looper() { //function that will loop through the child nodes of main
var nodes = document.getElementById('main').childNodes;
for(i=0; i<nodes.length; i++) {
console.log(nodes[i]);
}
}
HTML
<div id ="main">
<h1> Jimms web site </h1>
<nav>
<a href="index.html">Home page</a> |
<a href="about.html">About me</a> |
<a href="contact.html">Contact me</a>
</nav>
<p> This is a list: </p>
<div>
<ol id = "list">
<li><a href="mega">hi</a> - </li>
<li><a href="mario">mario</a> - </li>
<li><a href="luigi">luigi</a> - </li>
<li><a href="mash">mash</a> - </li>
<li><a href="mash">mash</a> - </li></ol>
</div>
<p> Thats it </p>
</div>
looper();
答案 0 :(得分:0)
你可能在DOM准备好之前调用javascript。在结束body标签之前调用函数。
<强> Live Demo 强>
function looper() { //function that will loop through the child nodes of main
var nodes = document.getElementById('main').childNodes;
for(i=0; i<nodes.length; i++) {
document.write(nodes[i]);
}
}
在body标签之前调用looper以确保DOM元素的可用性。
<script type="text/javascript" >
looper();
</script>
</body>