あなたはこのようにそれを行うことができます。
var list = document.getElementById("foo").getElementsByClassName("bar");
if (list && list.length > 0) {
list[0].innerHTML = "Goodbye world!";
}
か、あなたが少なく、エラーチェックと、より簡潔にしてそれを実行したい場合、それはこのように1行で行うことができます
document.getElementById("foo").getElementsByClassName("bar")[0].innerHTML = "Goodbye world!";
説明で
:
- あなたは
id="foo"
を持つ要素を取得します。
- その後、
class="bar"
を持っているオブジェクトの中に含まれているオブジェクトを見つけます。
- 配列のようなnodeListを返すので、そのnodeListの最初の項目を参照する
- その項目の
innerHTML
を設定して内容を変更することができます。
警告:一部の古いブラウザでは、getElementsByClassName
(たとえば、古いバージョンのIE)はサポートされていません。その機能は、欠落している場合は、その場所にシミングすることができます。
私は(他の誰かがすべての仕事をやらせる)を内蔵したCSS3セレクターのサポートはなく、ブラウザの互換性についてのあなた自身を心配するよりも、ライブラリを使用することをお勧めする場所です。あなたがライブラリでそれをやりたいだけなら、Sizzleはうまくいくでしょう。
Sizzle("#foo .bar")[0].innerHTML = "Goodbye world!";
jQueryのシズルライブラリーを内蔵していとjQueryで、これは次のようになります:シズルでは、これは次のように行われることになる
$("#foo .bar").html("Goodbye world!");
この場合、IDで親を取得する必要はありません。 'document.getElementsByClassName'は正常に動作します。 – rvighne
@rvighne OPの正確な要件は、彼が「より具体的になりたい」ということでした。その質問をする人は、DOMツリーのトラバースでより具体的になる方法を尋ねていました。 getElementByClassNameの使用は混乱の点ではありませんでしたが、誰かが私が必要に応じて両方を指示していたと簡単に思う方法を知ることができます。ではない。異なるノードの下にある同じクラスの要素とは対照的に、指定されたIDの特定のノードの下にある特定のクラスの要素だけを対象にしたい場合は、これを使用します。 –
@JosephMarikle私は参照してください。私はその質問をあまりにも早く読むと信じています。 – rvighne