返回未定义的JavaScript循环

返回未定义的JavaScript循环,javascript,loops,undefined,Javascript,Loops,Undefined,我试图编写一个函数,该函数将循环通过我的“main”div元素的子节点,并将元素标记名输出到hmtl页面上,每次我试图编译代码时,结果都没有定义。有人能解释一下原因吗 可能是因为Console.log返回未定义的值吗?但如果不是,我是否仍然应该从for循环接收某种输出 function looper() { //function that will loop through the child nodes of main var nodes = document.get

我试图编写一个函数,该函数将循环通过我的“main”div元素的子节点,并将元素标记名输出到hmtl页面上,每次我试图编译代码时,结果都没有定义。有人能解释一下原因吗

可能是因为Console.log返回未定义的值吗?但如果不是,我是否仍然应该从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]);
    }
}
function looper(){//将在main的子节点中循环的函数
var nodes=document.getElementById('main').childNodes;

对于(i=0;i您可能在DOM准备就绪之前调用javascript。在结束body标记之前调用函数

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]);
    }
}
function looper(){//将在main的子节点中循环的函数
var nodes=document.getElementById('main').childNodes;

对于(i=0;i首先,我建议使用
.children
而不是
.childNodes
在这样做之后,我的未定义计数从21个案例增加到了10个。但是,我不明白为什么要这样做,也不明白为什么案例会减少。
。children
只提供元素,而
。childrendes
包含不必要的元素搜索文本节点。在循环之前,添加
console.log(节点);
并检查控制台的值。-[02:57:01.604]({0:{},1:{},2:{},3:{},4:{},5:{},6:{},7:{},8:{},9:{})是我得到的预循环的控制台日志,没有包含脚本。在HTMLY中,你需要将循环放入脚本标记中,如我在回答中所示,检查这里的演示,
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]);
    }
}
    <script type="text/javascript" >
        looper();
    </script> 

</body>