为什么身体的第一个孩子未定义?

时间:2015-09-29 23:15:58

标签: javascript

它在身体上运行正常但在第一个孩子上输出undefined。 我做错了什么?

    function doit(e) {
      console.log('tag: ' + e.tagName);
      console.log('nt: ' + e.nodeType);
      for (var childElement in e.children) {
        doit(childElement);
      }
    }

    doit(document.body);
<body>
  <ul id="fork">
    <li id="myli" class="myclass">Hello</li>
  </ul>
</body>

修改

这帮助我完成了我的css清洁工。查看 [jsfiddle]

1 个答案:

答案 0 :(得分:3)

for...in循环迭代可枚举属性,但您想迭代这些值。然后,

for (var prop in e.children)
  doit(e.children[prop]);

然而,这是迭代类似数组的对象的坏方法。更好地使用

for (var i = 0; i<e.children.length; ++i)
  doit(e.children[i]);

或使用ES5数组方法

[].forEach.call(e.children, doit);

&#13;
&#13;
function doit(e) {
  console.log('tag: ' + e.tagName);
  console.log('nt: ' + e.nodeType);
  [].forEach.call(e.children, doit);
}
doit(document.body);
&#13;
<ul id="fork">
  <li id="myli" class="myclass">Hello</li>
</ul>
&#13;
&#13;
&#13;

相关问题