你可以这样做:
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 中,这将是这样完成的:
Sizzle("#foo .bar")[0].innerHTML = "Goodbye world!";
jQuery 内置了 Sizzle 库,在 jQuery 中,这将是:
$("#foo .bar").html("Goodbye world!");