<body></body>
<script type="text/javascript">
function showNode(){
var next = this.nextSibling;
var nodes = [];
var root = this.firstChild.innerHTML.split("+")[1];
while(next){
var text = next.cells[0].innerHTML.replace(/ | /g, "");
var reg = new RegExp("^\\+?" + root + ".*$");
if(reg.exec(text)){
nodes.push(text);
next = next.nextSibling;
}else{
next = null;
}
}
alert(nodes.join("\n"));
}
var showStruct = function (struct, element,left) {
    var type, i;
    left = left||""
    for (i in struct) {
        type = typeof struct[i];
        if (/string|number/.test(type)) 
        {
          var tr = document.createElement("tr")
              element.appendChild(tr)
              var td = document.createElement("td")
              td.innerHTML=left+" "+i
              tr.appendChild(td)          
        } 
          else if ('object' == type)
         {
                  var tr = document.createElement("tr")
              element.appendChild(tr)
              var td = document.createElement("td")
              td.innerHTML=left+"+"+i
              tr.appendChild(td); 
  tr.onclick = showNode; 
              arguments.callee(struct[i],element,left + " ")
        }

    }
};
 var tab =document.createElement("table")
  tab.border=1;tab.cellPadding=0;tab.cellSpacing=0;
  var tbody = document.createElement('tbody'); 
  tab.appendChild(tbody)
  document.body.appendChild(tab)  
showStruct( {"1":{"1-1":{"1-1-1":{"1-1-1-1":"99","1-1-1-2":"99","1-1-1-3":"99"}},"1-2":{"1-2-1":"1"}},"2":{"2-1":{"2-1-1":{"2-1-1-1":"99"},"2-1-2":"d","2-1-3":"d","2-1-4":"d"},"2-2":"ss"}},tbody) 
</script>

解决方案 »

  1.   

    ...没格式,再发一下.<body></body>
    <script type="text/javascript">
    function showNode(){
    var next = this.nextSibling;
    var nodes = [];
    var root = this.firstChild.innerHTML.split("+")[1];
    while(next){
    var text = next.cells[0].innerHTML.replace(/ | /g, "");
    var reg = new RegExp("^\\+?" + root + ".*$");
    if(reg.exec(text)){
    nodes.push(text);
    next = next.nextSibling;
    }else{
    next = null;
    }
    }
    alert(nodes.join("\n"));
    }
    var showStruct = function (struct, element,left) {
        var type, i;
        left = left||""
        for (i in struct) {
            type = typeof struct[i];
            if (/string|number/.test(type)) 
            {
              var tr = document.createElement("tr")
                  element.appendChild(tr)
                  var td = document.createElement("td")
                  td.innerHTML=left+" "+i
                  tr.appendChild(td)          
            } 
              else if ('object' == type)
             {
                      var tr = document.createElement("tr")
                  element.appendChild(tr)
                  var td = document.createElement("td")
                  td.innerHTML=left+"+"+i
                  tr.appendChild(td); 
      tr.onclick = showNode; 
                  arguments.callee(struct[i],element,left + " ")
            }

        }
    };
     var tab =document.createElement("table")
      tab.border=1;tab.cellPadding=0;tab.cellSpacing=0;
      var tbody = document.createElement('tbody'); 
      tab.appendChild(tbody)
      document.body.appendChild(tab)  
    showStruct( {"1":{"1-1":{"1-1-1":{"1-1-1-1":"99","1-1-1-2":"99","1-1-1-3":"99"}},"1-2":{"1-2-1":"1"}},"2":{"2-1":{"2-1-1":{"2-1-1-1":"99"},"2-1-2":"d","2-1-3":"d","2-1-4":"d"},"2-2":"ss"}},tbody) 
    </script>
      

  2.   

    看了半天了
    大概意思明白了
    可是这2个正则到底是怎么匹配的不大明白了 
    next.cells[0].innerHTML.replace(/ | /g, "");  不知道到底是什么用
    ("^\\+?" + root + ".*$");这个也一样 他好象只匹配节点目录下的...
    请解释下这2个正则吧    (我正则太菜了..................)