0

私は数時間答えを見つけようとしましたが、私が見つけたすべてが私の問題を解決しませんでした ネストされた順序付けられていないリストがたくさんあり、最後のレベルにはスパンに値があります

<ul>
    <li>
        <a>
            <span>0</span>
        </a>
        <ul>
            <li>
                <a>
                    <span>0</span>
                </a>
                <ul>
                    <li>
                        <a>
                            <span>1</span>
                        </a>
                    </li>
                    <li>
                        <a>
                            <span>2</span>
                        </a>
                    </li>
                </ul>
            </li>            
        </ul>
    </li>
     <li>
        <a>
            <span>0</span>
        </a>
        <ul>
            <li>
                <a>
                    <span>0</span>
                </a>
                <ul>
                    <li>
                        <a>
                            <span>5</span>
                        </a>
                    </li>
                    <li>
                        <a>
                            <span>6</span>
                        </a>
                    </li>
                </ul>
            </li>            
        </ul>
    </li>
</ul>

この値を上記の要素スパンに合計したい 私のコードは次のようになります。

$($("li a span").get().reverse()).each(function()
             {
                 var itemValue = parseInt($(this).text());
                 var parentSpan = $(this).parent().parent().parent().parent().find("a span:first");
                 var parentVal= parseInt(parentSpan.text());
                 parentVal=parentVal + itemValue;
                 parentSpan.text(parentVal.toString());
             });

これにより、次の結果が得られます

28  <-- here is the problem ...
    3
        1
        2
11
    11
        5
        6

最初のliは、同じレベルの他のすべてのliも合計します。2番目の部分のように、サブレベルのみが親レベルに合計される必要があると予想していました

期待される結果:

3   <-- this should only count childs not same level elements
    3
        1
        2
11
    11
        5
        6

どんな助けでも大歓迎です

前もってありがとうドン

4

1 に答える 1

0

以下のコードを試してみてください。これが役に立てば幸いです。

var $topUl = $($('ul')[0]);
$.each($topUl.children('li'), function(index, val){
$ulEle = $(val).children('ul');
var sum1 = 0;
$.each($ulEle.children('li'), function(index, val){
    var sum2 = 0;
    $.each($(val).find('ul span'), function(index2, val){
        sum2+=parseInt($(val).text());
    });
    $(val).children('a').find('span').text(sum2);
    sum1+=sum2;
});
$(val).children('a').find('span').text(sum1);
});
于 2013-06-15T09:02:09.540 に答える