Reputation: 45
I can't build logic of JavaScript in this case. Why "Dollar" don't changes to "Dolor", and "dollar" to "dolor"? But at the same time background styling matches. What's wrong with my logic? Thank you.
var dollarEls = document.querySelectorAll("li .dollar");
for (var i = 0; i < dollarEls.length; i++) {
if(dollarEls[i] == "Dollar") {
dollarEls[i].innerHTML = "Dolor";
}else if (dollarEls[i] == "dollar") {
dollarEls[i].innerHTML = "dolor";
}else {
dollarEls[i].style.backgroundColor = "orange";
}
}
<ul>
<li>Lorem ipsum <span class="dollar">Dollar</span> sit amet, consectetur adipiscing elit. Pellentesque mi tortor, convallis vitae rhoncus suscipit, finibus a dui. Quisque congue vulputate dolor vel facilisis. Nunc non ipsum porta, efficitur odio euismod, facilisis erat.</li>
<li>Nam <span class="dollar">Dollar</span> ante, faucibus nec enim consequat, auctor faucibus nulla. Etiam bibendum commodo elit at euismod. Nullam elementum varius ligula sit amet accumsan. Nunc arcu nunc, mattis quis mollis eget, ultricies a nisi. Aliquam maximus luctus magna, vitae feugiat <span class="dollar">dollar</span> tempus non. Nulla dui ante, tempus at justo ut, ultricies cursus mauris.</li>
</ul>
Upvotes: 0
Views: 367
Reputation: 26444
Instead of saying
if(dollarEls[i] == "Dollar")
say
if(dollarsEls[i].innerHTML == "Dollar");
Replace both such occurences
var dollarEls = document.querySelectorAll("li .dollar");
for (var i = 0; i < dollarEls.length; i++) {
if (dollarEls[i].innerHTML == "Dollar") {
dollarEls[i].innerHTML = "Dolor";
} else if (dollarEls[i].innerHTML == "dollar") {
dollarEls[i].innerHTML = "dolor";
} else {
dollarEls[i].style.backgroundColor = "orange";
}
}
<ul>
<li>Lorem ipsum <span class="dollar">Dollar</span> sit amet, consectetur adipiscing elit. Pellentesque mi tortor, convallis vitae rhoncus suscipit, finibus a dui. Quisque congue vulputate dolor vel facilisis. Nunc non ipsum porta, efficitur odio euismod, facilisis erat.</li>
<li>Nam <span class="dollar">Dollar</span> ante, faucibus nec enim consequat, auctor faucibus nulla. Etiam bibendum commodo elit at euismod. Nullam elementum varius ligula sit amet accumsan. Nunc arcu nunc, mattis quis mollis eget, ultricies a nisi. Aliquam maximus luctus magna, vitae feugiat <span class="dollar">dollar</span> tempus non. Nulla dui ante, tempus at justo ut, ultricies cursus mauris.</li>
</ul>
Upvotes: 1
Reputation: 944530
You're testing if the string representation of the HTML Element Object is equal to the string or not, instead of reading its text content (with innerHTML
).
Upvotes: 3