RobinRattasep
RobinRattasep

Reputation: 33

HTML only replaces 1st match

How can I make that this code replaces both paragraphs? I also need it to work with lists.

<p class="demo">Mr Blue has a blue house and a blue car blue blu,e blue bl,ue.</p>
<p class="demo">Mr Blue has a blue house and a blue car blu,e blue bl,ue blue.</p>

<script>
let str = document.getElementByClass("demo").innerHTML; 
let res = str.replace(/,/g, ", ");
document.getElementByClass("demo").innerHTML = res;
</script>

Upvotes: 0

Views: 76

Answers (2)

Roomet S&#252;tt
Roomet S&#252;tt

Reputation: 94

Never refer by ID, always use classes.

var els = document.getElementsByClassName('kala');
for (var i = 0; i < els.length; i++) {
  els[i].innerHTML = els[i].innerHTML.replace(/,/g, ', ');
}

This kind of a snippet does the job!

Upvotes: 2

CubeStorm
CubeStorm

Reputation: 138

You can't use 2 (or more) ids which are equals. Instead of use class:

<p class="demo">Mr Blue has a blue house and a blue car blue blue blue blue.</p>
<p class="demo">Mr Blue has a blue house and a blue car blue blue blue blue.</p>

//

const elements = document.querySelectorAll(".demo"); 

elements.forEach((element) => element.textContent.replace(/blue/g, "red"));

Upvotes: 1

Related Questions