对于id,name,price三个节点为什么返回值都是true,他们都没子节点了///这是错误的它们都有子结点,结点类型是TextNode即两标签之间的文字。不知道你要什么效果,所以暂时没想到怎么来改你这个。

解决方案 »

  1.   

    我的目的就是想遍历出子节点,但是如果id,name,price三个节点返回值都是true,那么我就没法做了,应该是在这里返回false,就继续遍历别的节点。但是如果用selectSingleNode直接定位到id,name,price三个节点中的一个,调用hasChildNodes方法时就返回false。
      

  2.   

    那就先用hasChildNodes判断,然后:
    如果有且仅有一个,则判断该子节点类型,如果类型为NODE_TEXT(3),则仍将此子节点的上级当作并无下级节点来处理.
    除此,当作有下级节点处理。这个逻辑稍微有点麻烦,但是你说hasChildNodes这么不确定,那没办法了。代码我不想写了,让我偷懒下吧。
      

  3.   

    alert(item.hasChildNodes());  //对于id,name,price三个节点为什么返回值都是true,他们都没子节点了呀
    if( item.hasChildNodes() && curNode.childNodes.length = 1 && curNode.childNodes[0].nodeType = 3 )
    {
    // 认为item 无下级
    }
    else if( item.hasChildNodes() )
    {
    // 有下级
    }
    else
    {
    // 无下级
    }
      

  4.   

    没改完,应该是:if( item.hasChildNodes() && item.childNodes.length = 1 && item.childNodes[0].nodeType = 3 )
    {
    // 认为item 无下级
    }
    else if( item.hasChildNodes() )
    {
    // 有下级
    }
    else
    {
    // 无下级
    }