Puede hacerlo de esta manera:
var list = document.getElementById("foo").getElementsByClassName("bar");
if (list && list.length > 0) {
list[0].innerHTML = "Goodbye world!";
}
o, si desea hacerlo con la menor comprobación de errores y más brevedad, se puede hacer en una línea como la siguiente:
document.getElementById("foo").getElementsByClassName("bar")[0].innerHTML = "Goodbye world!";
En la explicación:
- Usted recibe el elemento con
id="foo"
.
- A continuación, busca los objetos que están dentro de ese objeto que tienen
class="bar"
.
- Devuelve una lista de nodos similar a una matriz, por lo que hace referencia al primer elemento en esa lista de nodos
- Puede configurar el
innerHTML
de ese elemento para cambiar su contenido.
Advertencias: algunos navegadores anteriores no son compatibles con getElementsByClassName
(por ejemplo, versiones anteriores de IE). Esa función puede ajustarse en su lugar si falta.
Aquí es donde recomiendo el uso de una biblioteca que se ha incorporado en el apoyo del selector CSS3 lugar de preocuparse por la compatibilidad del navegador mismo (dejar que otra persona haga todo el trabajo). Si solo quieres una biblioteca para hacer eso, entonces Sizzle funcionará muy bien. En chisporroteo, esto se puede hacer de esta manera:
Sizzle("#foo .bar")[0].innerHTML = "Goodbye world!";
jQuery tiene la biblioteca chisporroteo incorporado y en jQuery, esto sería:
$("#foo .bar").html("Goodbye world!");
No es necesario obtener el padre por ID en este caso. 'document.getElementsByClassName' funcionaría bien. – rvighne
@rvighne los requisitos exactos de OP eran que él "quisiera ser más específico". La persona que hizo la pregunta preguntó cómo podría ser más específico en el cruce de árboles DOM. El uso de getElementByClassName no fue un punto de confusión, pero puedo ver cómo alguien podría pensar fácilmente que estaba indicando que ambos son necesarios. Ellos no son. Si desea orientar solo los elementos de una determinada clase que están debajo de un nodo particular de un ID dado en oposición a los elementos de esa misma clase en un nodo diferente, esto es lo que usaría. –
@JosephMarikle Ya veo. Creo que leí la pregunta demasiado rápido. – rvighne