2016-10-20 37 views
0

我的递归函数工作:
hasChildNodes总是返回未定义

function Recursive(JSObject) { 

    for(let JSChild of JSObject.children) { 
     console.log(JSChild.name); 
     console.log(JSChild.hasChildNodes); 
     /*if(JSChild.hasChildNodes) { 
      Recursive(JSChild); 
     }*/ 
    } 
} 

不幸的是,线:

的console.log(JSChild.hasChildNodes);

总是返回“undefined”,而有些节点有一个或多个孩子。
此外,w3school使用一些支架在hasChildNodes结束,但是当我这样做,我的浏览器(Chrome)返回此错误:

JSChild.hasChildNodes不是一个函数

我不理解为什么没有任何工作。
如果你能帮助我,我将不胜感激。

编辑:(JSON格式对象)

{ 
    "dir":"", 
    "name":"myProject", 
    "type":"folder", 
    "children":[ 
    { 
     "dir":"myProject", 
     "name":"css", 
     "type":"folder", 
     "children":[ 
     { 
      "dir":"myProject/css", 
      "name":"main.css", 
      "type":"file" 
     }, 
     { 
      "dir":"myProject/css", 
      "name":"menu.css", 
      "type":"file" 
     }, 
     { 
      "dir":"myProject/css", 
      "name":"user.css", 
      "type":"file" 
     } 
     ] 
    }, 
    { 
     "dir":"myProject", 
     "name":"fonts", 
     "type":"folder" 
    }, 
    { 
     "dir":"myProject", 
     "name":"images", 
     "type":"folder", 
     "children":[ 
     { 
      "dir":"myProject/images", 
      "name":"logo.png", 
      "type":"file", 
      "corrupted":true 
     } 
     ] 
    }, 
    { 
     "dir":"myProject", 
     "name":"index.html", 
     "type":"file" 
    }, 
    { 
     "dir":"myProject", 
     "name":"js", 
     "type":"folder", 
     "children":[ 
     { 
      "dir":"myProject/js", 
      "name":"controllers", 
      "type":"folder", 
      "children":[ 
      { 
       "dir":"myProject/js/controllers", 
       "name":"core", 
       "type":"folder", 
       "children":[ 
       { 
        "dir":"myProject/tempjs/controllerslates/core", 
        "name":"menu.js", 
        "type":"file" 
       } 
       ] 
      }, 
      { 
       "dir":"myProject/js/controllers", 
       "name":"errors", 
       "type":"folder", 
       "children":[ 
       { 
        "dir":"myProject/js/controllers/errors", 
        "name":"error.js", 
        "type":"file" 
       } 
       ] 
      }, 
      { 
       "dir":"myProject/js/controllers", 
       "name":"home", 
       "type":"folder", 
       "children":[ 
       { 
        "dir":"myProject/js/controllers/home", 
        "name":"homePage.js", 
        "type":"file" 
       } 
       ] 
      }, 
      { 
       "dir":"myProject/js/controllers", 
       "name":"home", 
       "type":"folder", 
       "children":[ 
       { 
        "dir":"myProject/js/controllers/user", 
        "name":"list.js", 
        "type":"file" 
       }, 
       { 
        "dir":"myProject/js/controllers/user", 
        "name":"login.js", 
        "type":"file" 
       }, 
       { 
        "dir":"myProject/js/controllers/user", 
        "name":"profile.js", 
        "type":"file" 
       }, 
       { 
        "dir":"myProject/js/controllers/user", 
        "name":"subscribe.js", 
        "type":"file" 
       } 
       ] 
      } 
      ] 
     }, 
     { 
      "dir":"myProject/js", 
      "name":"libs", 
      "type":"folder", 
      "children":[ 
      { 
       "dir":"myProject/js/libs", 
       "name":"handlebars.min.js", 
       "type":"file" 
      }, 
      { 
       "dir":"myProject/js/libs", 
       "name":"jquery.min.js", 
       "type":"file" 
      }, 
      { 
       "dir":"myProject/js/libs", 
       "name":"require.min.js", 
       "type":"file", 
       "corrupted":true 
      } 
      ] 
     }, 
     { 
      "dir":"myProject/js", 
      "name":"main.js", 
      "type":"file" 
     }, 
     { 
      "dir":"myProject/js", 
      "name":"models", 
      "type":"folder", 
      "children":[ 
      { 
       "dir":"myProject/js/models", 
       "name":"menu.js", 
       "type":"file" 
      }, 
      { 
       "dir":"myProject/js/models", 
       "name":"user.js", 
       "type":"file" 
      }, 
      { 
       "dir":"myProject/js/models", 
       "name":"users.js", 
       "type":"file" 
      } 
      ] 
     } 
     ] 
    }, 
    { 
     "dir":"myProject", 
     "name":"ressources", 
     "type":"folder" 
    }, 
    { 
     "dir":"myProject", 
     "name":"views", 
     "type":"folder", 
     "children":[ 
     { 
      "dir":"myProject/templates", 
      "name":"core", 
      "type":"folder", 
      "children":[ 
      { 
       "dir":"myProject/templates/core", 
       "name":"footer.html", 
       "type":"file" 
      }, 
      { 
       "dir":"myProject/templates/core", 
       "name":"header.html", 
       "type":"file" 
      }, 
      { 
       "dir":"myProject/templates/core", 
       "name":"menu.html", 
       "type":"file" 
      } 
      ] 
     }, 
     { 
      "dir":"myProject/templates", 
      "name":"errors", 
      "type":"folder", 
      "children":[ 
      { 
       "dir":"myProject/templates/errors", 
       "name":"error401.html", 
       "type":"file" 
      }, 
      { 
       "dir":"myProject/templates/errors", 
       "name":"error403.html", 
       "type":"file" 
      }, 
      { 
       "dir":"myProject/templates/errors", 
       "name":"error404.html", 
       "type":"file", 
       "corrupted":true 
      } 
      ] 
     }, 
     { 
      "dir":"myProject/templates", 
      "name":"home", 
      "type":"folder", 
      "children":[ 
      { 
       "dir":"myProject/templates/home", 
       "name":"homePage.html", 
       "type":"file" 
      } 
      ] 
     }, 
     { 
      "dir":"myProject/templates", 
      "name":"home", 
      "type":"folder", 
      "children":[ 
      { 
       "dir":"myProject/templates/user", 
       "name":"list.html", 
       "type":"file" 
      }, 
      { 
       "dir":"myProject/templates/user", 
       "name":"login.html", 
       "type":"file" 
      }, 
      { 
       "dir":"myProject/templates/user", 
       "name":"profile.html", 
       "type":"file" 
      }, 
      { 
       "dir":"myProject/templates/user", 
       "name":"subscribe.html", 
       "type":"file" 
      } 
      ] 
     } 
     ] 
    } 
    ] 
} 
+0

注意:['hasChildNodes'](https://developer.mozilla.org/en-US/docs/Web/API/Node/hasChildNodes)是一种方法,不是属性,需要调用。 – evolutionxbox

+0

你可以分享你正在迭代的'JSObject'吗? – evolutionxbox

+0

如果我可以给你JSON格式,这里是(在我的第一篇文章中) – Lodec

回答

0

最后,我将使用

。 if(typeof(enfant.children)==“object”)

检查父节点是否有子节点。
感谢回复我的帖子的人。

1

Object没有名为hasChildNodes属性或方法,它是Node方法

+0

好的...如何检查一个节点是否在我的代码中有孩子而不是使用hasChildNodes? – Lodec