你可以這樣說:
var list = document.getElementById("foo").getElementsByClassName("bar");
if (list && list.length > 0) {
list[0].innerHTML = "Goodbye world!";
}
,或者,如果你想用更少的錯誤檢查和更簡潔做到這一點的,它可以在一個線路就像這樣:
document.getElementById("foo").getElementsByClassName("bar")[0].innerHTML = "Goodbye world!";
在說明:
- 你得到
id="foo"
的元素。
- 然後,您可以找到該對象中包含的具有
class="bar"
的對象。
- 返回一個類似數組的節點列表,以便引用該節點中的第一個項目
- 然後,您可以設置該項目的
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