思路,从当前点查看childElement 然后判断tagname 如果是 checkbox 就true;

解决方案 »

  1.   

    关键是你客户端的树状结构是怎么实现的,有没有一个树状的数据结构,如果有,遍历这个数据结构的某个分支就可以了如果没有数据结构,而是直接输出HTML对象的,可以考虑给每个节点一个“级”属性,从选中的项开始往后,所有连续的“级”数小于此节点“级”数的节点,全部选中即可,由于不知道你的树状结构的实现方式,只能给一个原理性的东西做参考:假设你的节点的选中标记(就是那个 +/- 符号)是如下表示的:
    <img src=plus.gif ...>
    <img src=minus.gif ...>
    加上“级”属性:
    <img src=plus.gif/minus.gif node_layer=XXX onclick=OnClickNode()>
    其中 XXX 是 jsp 生成页面时输出的整数
    <script>
    function OnClickNode()
    {
    var oSrc = event.srcElement;
    var oParent = oSrc.parentNode;
    var iCurrNodeLayer = oSrc.node_layer;
    var oParentChildNodes = oParent.childNodes;
    for ( var i = 0; i < oParentChildNodes.length; i ++ )
    {
    var oNode = oParentChildNodes.item(i);
    if ( oNode == oSrc )
    {
    for ( i = i+1; i < oParentChildNodes.length; i ++ )
    {
    oNode = oParentChildNodes.item(i);
    if ( typeof(oNode.node_layer) != "undefined" )
    {
    if ( oNode.node_layer <= iCurrNodeLayer )
    break;
    oNode.src = "plus.gif";
    }
    }
    break;
    }
    }
    }
    </script>
      

  2.   

    唉,嵌套太多,自动换行了关键是你客户端的树状结构是怎么实现的,有没有一个树状的数据结构,如果有,遍历这个数据结构的某个分支就可以了如果没有数据结构,而是直接输出HTML对象的,可以考虑给每个节点一个“级”属性,从选中的项开始往后,所有连续的“级”数小于此节点“级”数的节点,全部选中即可,假设你的节点的选中标记(就是那个 +/- 符号)是如下表示的:
    <img src=plus.gif ...>
    <img src=minus.gif ...>
    加上“级”属性:
    <img src=plus.gif/minus.gif node_layer=XXX onclick=OnClickNode()>
    其中 XXX 是 jsp 生成页面时输出的整数
    <script>
    function OnClickNode()
    {
        var oSrc = event.srcElement;
        var oParent = oSrc.parentNode;
        var iCurrNodeLayer = oSrc.node_layer;
        var oParentChildNodes = oParent.childNodes;
        for ( var i = 0; i < oParentChildNodes.length; i ++ )
        {
            var oNode = oParentChildNodes.item(i);
            if ( oNode == oSrc )
            {
                for ( i = i+1; i < oParentChildNodes.length; i ++ )
                {
                    oNode = oParentChildNodes.item(i);
                    if ( typeof(oNode.node_layer) != "undefined" )
                    {
                        if ( oNode.node_layer <= iCurrNodeLayer )
                            break;
                        oNode.src = "plus.gif";
                    }
                }
                break;
            }
        }
    }
    </script>