Ad

I Want The Function Of For Loop To Perform One By One When A Key Or Mouse Is Pressed

- 1 answer

<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

Ad

Answer

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>

Ad
source: stackoverflow.com
Ad