4

例えば:

// ...
<body>
  <div>
    <div>
    </div>
  </div>
</body>
// ...

この入れ子の深さは 3? しかし、より一般的には、DOM をトラバースしてこの情報を見つけるにはどうすればよいでしょうか?

この投稿で説明されているように、オブジェクト リテラルとしてモデル化された n-ary ツリーのように DOM を扱うことに興味があります。

JavaScript の n 分木

4

4 に答える 4

5
function getMaximumDepth (element) {
    var child = element.firstChild;
    var childrenDepth = [];

    if ( ! child ) {
        return 1;
    }

    while (child) {
        childrenDepth.push( getMaximumDepth(child) );
        child = child.nextSibling;
    }

    return Math.max.apply(Math, childrenDepth) + 1;
}

デモ: http://jsfiddle.net/53R2p/

于 2013-08-21T17:33:23.117 に答える
2

唯一の目標が最大ネスト レベルを決定することである場合は、次の使用を検討しquerySelectorます (適切に最適化する必要があるため)。

function getMaxNestLevel() {
    var i = 1, sel = '* > *'; /* html > body is always present */
    while(document.querySelector(sel)) {
        sel += ' > *';
        i++;
    }
    return i;
}

(この SO ページ マークアップの一部を使用)

于 2013-08-21T18:03:03.483 に答える