4

IDが「productPriceContainer」のdivがあり、このdiv内にクラス「price」があります。「price」という他のクラスもあるので、「price」クラスのinnerHTMLにアクセスしたいと思います。

このようなものをチェーンできますか?

document.getElementById(productPriceContainer).getElementsByClassName(price).innerHTML

そうでない場合、私が必要なことを行う正しい方法は何ですか?

ありがとう

4

3 に答える 3

5

priceid の要素に class を持つ要素が 1 つある場合はproductPriceContainer、次のことができます。

 document.getElementById('productPriceContainer')
     .getElementsByClassName('price')[0].innerHTML

に注目してくださいgetElementsByClassName。そのように連鎖できない理由を説明しています。getElementByClassNameid とは対照的に、特定のクラスを持つ要素の単一性がないため、呼び出される関数はありません。

于 2013-01-21T12:57:19.567 に答える
1
  1. メソッドに文字列ではなく変数を渡しています->そうではあり"price"ませんprice

  2. クラス名でノードを取得する方法はgetElementsByClassName 、「s」がありませんでした

  3. DOM要素の配列を返すため、コンテナの子を反復処理する必要があります

例えば:

document.getElementById("productPriceContainer").getElementsByClassName("price")[0].innerHTML = "Asdf";

innerHTMLコンテナ Element 内のクラスを持つ最初の DOM 要素の"price"を「Asdf」に設定します

要素を反復処理すると、次のようになります。

var elements = document.getElementById("productPriceContainer")
if(elements) {
  var classes = elements.getElementsByClassName("price");
   for (var i = 0; i < elements.length; i++) {
     elements[i].innerHTML = "Asdf" + i;
    }
}

ここにJSBinがあります

于 2013-01-21T13:00:48.613 に答える
1

ほとんど。

  • 文字列を渡したい場合は、未定義の変数ではなく文字列を渡す必要があります
  • getElementsByClassName(複数!) ノードではなく NodeList を返すため、それをループしてノードを取得する必要があります (その上でinnerHTML.
于 2013-01-21T12:57:40.143 に答える