<div id="text">Nature in the broadest sense is the physical world or universe</div>
let el = document.getElementById(text);
let eltext = el.innerText;
let final = eltext.split(" ");
let i;
for (i = 0; i < final.length; i ) {
if (final[i] === "the") {
final[i] = `<b>${final[i]}</b>`;
}
let result = (final " ").replace(/,/g, " ");
el.innerHTML = result;
the result will be: Nature in the broadest sense is the physical world or universe
what i want: when any key is triggered for the first time: Nature in the broadest sense is the physical world or universe
when any key is triggered for the second time: Nature in the broadest sense is the physical world or universe
when any key is triggered for the third time again: Nature in the broadest sense is the physical world or universe
CodePudding user response:
Rather than for
loop, I'd recommend you use built-in Array
methods for better readability. Here I've extended your sample sentence to show how it can accommodate for longer sentences with more target words.
const text = document.querySelector('#text').innerText.split(' ');
const indices = text.map((word, index) => word === 'the' ? index : 0)
.filter(i => i !== 0);
let highlightIndex = 0;
function toggle() {
const arr = [...text];
arr[indices[highlightIndex]] = `<strong style="color: red;">${arr[indices[highlightIndex]]}</strong>`;
document.querySelector('#text').innerHTML = arr.join(' ');
highlightIndex = 1;
if (highlightIndex > indices.length -1 ) highlightIndex = 0;
}
window.addEventListener('keydown', toggle);
window.addEventListener('click', toggle);
<div id="text">Nature in the broadest sense is the physical world or universe. Introduce the article here for testing the code.</div>