Quiero reemplazar el contenido dentro de un elemento html, así que estoy usando la siguiente función para eso:
function ReplaceContentInContainer(id,content) {
var container = document.getElementById(id);
container.innerHTML = content;
}
ReplaceContentInContainer('box','This is the replacement text');
<div id='box'></div>
Lo anterior funciona muy bien, pero el problema es que tengo más de un elemento html en una página en la que quiero reemplazar el contenido. Así que no puedo usar identificadores sino clases en su lugar. Me han dicho que JavaScript no admite ningún tipo de elemento incorporado incorporado por función de clase. Entonces, ¿cómo se puede revisar el código anterior para que funcione con clases en lugar de identificadores?
PD: No quiero usar jQuery para esto.
fuente
class
como nombre de variable no funciona en Safari, por lo que actualmente tiene un impacto.elems[i].className
, decirvar cn
y usarcn && cn.match(new RegExp("(^|\\s)" + matchClass + "(\\s|$)"))
funcionaría mejor porque coincide con cualquier espacio en blanco (espacio, espacio sin separaciones, tabulación, etc.) y al mismo tiempo permite que coincidan los nombres de primera / última clase. Ejemplo: jsfiddle.net/AXdtH/1636Por supuesto, todos los navegadores modernos ahora admiten la siguiente manera más simple:
pero ten en cuenta que no funciona con IE8 o antes. Ver http://caniuse.com/getelementsbyclassname
Además, no todos los navegadores devolverán un estado puro
NodeList
como deberían.Probablemente todavía estés mejor usando tu biblioteca favorita de navegador cruzado.
fuente
querySelectorAll
.Eso funcionará en navegadores "modernos" que implementen ese método (IE8 +).
Si desea proporcionar soporte para navegadores más antiguos, puede cargar un motor de selección independiente como Sizzle (4KB mini + gzip) o Peppy (10K mini) y recurrir a él si no se encuentra el método querySelector nativo.
¿Es excesivo cargar un motor selector solo para poder obtener elementos con una clase determinada? Probablemente. Sin embargo, los scripts no son tan grandes y es posible que el motor de selección sea útil en muchos otros lugares de su script.
fuente
document.querySelector
funciona en IE8 y superior: caniuse.com/queryselectorUna manera simple y fácil
fuente
Me sorprende que no haya respuestas usando Expresiones regulares. Esta es la respuesta de Andrew , en
RegExp.test
lugar de usarString.indexOf
, ya que parece funcionar mejor para múltiples operaciones, de acuerdo con las pruebas de jsPerf .También parece ser compatible con IE6 .
Si busca las mismas clases con frecuencia, puede mejorarlas almacenando las expresiones regulares (precompiladas) en otro lugar y pasándolas directamente a la función, en lugar de una cadena.
fuente
Esto debería funcionar en casi cualquier navegador ...
Deberías poder usarlo así:
fuente
fuente
Supongo que esta no era una opción válida cuando se le preguntó originalmente, pero ahora puede usarla
document.getElementsByClassName('');
. Por ejemplo:Consulte la documentación de MDN para más información.
fuente
Pienso algo como:
trabajaría
fuente
jQuery maneja esto fácilmente.
Cambia todos los elementos .myclass a ese texto.
fuente
Cuando algunos elementos carecen de ID, uso jQuery así:
Esta podría ser una solución extraña, pero tal vez alguien lo encuentre útil.
fuente
myclass
, todos obtendrán la identificaciónmyid
, ¡pero los identificadores deben ser únicos! Además, OP dice explícitamente que evite jQuery.