61

Chrome コンテンツ スクリプト拡張機能を作成していますが、残念ながら親要素以外に一意の識別子を持たない特定の要素をターゲットにできるようにする必要があります。

の直接の最初の子要素をターゲットにする必要がありparentElementます。console.log(parentElement)子要素/ノードの両方を完全に報告しますが、後続のコンソール ログ (childNodes を対象とするログ) は、undefined何をしても常に値を返します。

これはこれまでの私のコードです
(混乱や余分な不必要な説明を避けるために、実際の名前は除外しました)

function injectCode() {

    var parentElement = document.getElementsByClassName("uniqueClassName");

    if (parentElement && parentElement.innerHTML != "") {

        console.log(parentElement);
        console.log(parentElement.firstElementChild);
        console.log(parentElement.firstChild);
        console.log(parentElement.childNodes);
        console.log(parentElement.childNodes[0]);
        console.log(parentElement.childNodes[1]);

    } else {

        setTimeout(injectCode, 250);
    }   
}

の最初の子要素/ノードを選択するにはどうすればよいparentElementですか?

ここに画像の説明を入力

更新:
parentElement.children[0]と同じエラーもありますparentElement.childNodes[0]

4

1 に答える 1

123

これらは両方とも、最初の子ノードを提供します。

console.log(parentElement.firstChild); // or
console.log(parentElement.childNodes[0]);

要素ノードである最初の子が必要な場合は、次を使用します。

console.log(parentElement.children[0]);

編集

ああ、私は今あなたの問題を理解しています。parentElement配列です。

getElementsByClassNameが 1 つの結果のみを返すことがわかっている場合は[0]、要素を配列解除するために使用する必要があります (はい、その単語を作成しました)。

var parentElement = document.getElementsByClassName("uniqueClassName")[0];
于 2012-05-06T22:04:42.117 に答える