Muy bien, he incursionado en JavaScript antes, pero lo más útil que he escrito es un conmutador de estilo CSS. Así que soy algo nuevo en esto. Digamos que tengo un código HTML como este:
<div id="foo">
<div class="bar">
Hello world!
</div>
</div>
¿Cómo cambiaría "Hola mundo!" a "¡Adiós mundo!" ? Sé cómo funcionan document.getElementByClass y document.getElementById, pero me gustaría ser más específico. Lo siento si esto se ha preguntado antes.
fuente
document.getElementsByClassName
funcionaría bien.innerHtml
de.textContent
la prestación de la seguridad de copiar / pegar codificadores.Puedes hacerlo así:
o, si desea hacerlo con menos verificación de errores y más brevedad, puede hacerlo en una línea como esta:
En explicación:
id="foo"
.class="bar"
.innerHTML
elemento de ese elemento para cambiar su contenido.Advertencias: algunos navegadores antiguos no son compatibles
getElementsByClassName
(por ejemplo, versiones anteriores de IE). Esa función puede ajustarse en su lugar si falta.Aquí es donde recomiendo usar una biblioteca que tenga compatibilidad con el selector CSS3 incorporado en lugar de preocuparse por la compatibilidad del navegador (deje que alguien más haga todo el trabajo). Si desea que solo una biblioteca haga eso, Sizzle funcionará de maravilla. En Sizzle, esto se haría así:
jQuery tiene la biblioteca Sizzle incorporada y en jQuery, esto sería:
fuente
Si esto necesita funcionar en IE 7 o inferior, debe recordar que getElementsByClassName no existe en todos los navegadores. Debido a esto, puede crear su propio getElementsByClassName o puede probar esto.
fuente
getElementsByClassName
tampoco funciona en IE8, pero puede usarloquerySelectorAll
en su lugar (más o menos de todos modos).qSA
en una cuña para que aún pueda usar código nativo en IE8. Si bien echa un vistazo más de cerca a su solución, tiene algunas cosas que deben corregirse.var i = 0, var child = fooDiv.childNodes[i]
no es válido.i <= fooDiv.childNodes
Realmente no tiene sentido.childNode.className.test("bar")
No haychildNode
variable, y una cadena no tiene untest()
método.Función recursiva :
fuente
La forma más fácil de hacerlo es:
o mejor legible:
fuente
No debe usar document.getElementByID porque solo funciona para el lado del cliente que controla qué identificadores son fijos. Debería usar jquery en su lugar como el siguiente ejemplo.
utilizar este :
si desea eliminar, editar cualquier operación, simplemente agregue "." detrás y hacer las operaciones
fuente