Estoy tratando de cambiar el texto del párrafo en un para cada ciclo. Esto parece un problema simple (¿específico de JS?). Soy nuevo en este lenguaje, vengo de Matlab y Java. Violín adjunto. Cualquier ayuda es apreciada.
https://jsfiddle.net/npkx3of4/1/
function myFunction() { var ps = document.getElementsByClassName('.test'); for (var p of ps) { p = p.replace('a', '<span style="color:blue;">b</span>'); } alert("Working?"); return null; }getElementsByClassName('.test') debe ser getElementsByClassName('test') .
Debería asignar el resultado de reemplazar el innerHTML del párrafo nuevamente al innerHTML del párrafo.
function myFunction() { var ps = document.getElementsByClassName('test'); for (var p of ps) { p.innerHTML = p.innerHTML.replace('a', '<span style="color:blue;">b</span>'); } alert("Working?"); return null; } <h1>Test</h1> <hr> <p class="test">a</p> <button type="button" onclick='myFunction();'>Click Me!</button>No es necesario agregar un punto antes del nombre de la clase cuando se usa getElementsByClassName .
var ps = document.getElementsByClassName('test');Seleccione solo el contenido de texto sin formato dentro del elemento, luego reemplace todos los caracteres especificados antes de volver a escribir el HTML interno.
... for (var p of ps) { p.innerHTML = p.textContent.replaceAll('a', '<span style="color:blue;">b</span>'); } ...