2

Z Z div B div A`divと呼ばれるものがあるとしましょう。.that is a sub-sub-sub... child of acalledwhich is a child of acalled

Bからまでのすべてのブロックが(が表示されます)Zに設定されます。display=noneA

ブロックにリンクしているアンカーをクリックすると、Zそれが表示されます。

そのためには、ブロック Z の表示を設定する必要がありますblockが、その親の表示 * をブロックに設定し、その親とブロック B までずっと....

2 つ、4 つ、または 10 のレベルを持つことができるので、すべての可能なレベルを「ハード」コーディングしたくありません。そこで、自動で行う方法を見つけたいと思います。

2つの「世代」ごとに設定する必要があるため、上記の例を少し単純化しましたdisplay=block(私のコードでは をparentNode.parentNode参照)

これまでのところ、これは私のコードです(うさぎの穴から2レベル下がっています!)自動化ではありません:

function indexLink(link_to_anchor) {
    var x = document.getElementById(link_to_anchor);
    if (x.parentNode.parentNode.getAttribute("class") == "divcodebox") {
        if (x.parentNode.parentNode.parentNode.parentNode.getAttribute("class") == "divcodebox") {
            x.parentNode.parentNode.parentNode.parentNode.style.display = "block";
        }
        x.parentNode.parentNode.style.display = "block";
    }
    x.style.display = "block";
}

indexLink() を再帰的に使用する:

function indexLink(link_to_anchor) {
    var x = document.getElementById(link_to_anchor);
    x.style.display = "block";
    if (x.parentNode.parentNode.getAttribute("class") == "divcodebox") {
        x.parentNode.parentNode.style.display = "block";
        indexLink(x)
    }
}
4

3 に答える 3