Home > Software design >  Splitting text area value into array then loop and run function
Splitting text area value into array then loop and run function

Time:11-12

I'm attempting to:

  • Take the input from a text area
  • Split into an array of strings, each line being an element in that array
  • Loop through each element this array, running a function that uses the text in the current element, then wait 5 seconds before going into the next loop iteration/element.

All my attempts so far have unfortunately not worked, I'm a beginner to JS so am taking snippets and trying my best here:

// var LS = document.querySelector('textarea').value().split('\n');
for (let i in LS) {
   setTimeOut(function(i),5000);
}

CodePudding user response:

The first argument to setTimeout() must be a function to call. You're calling the function immediately.

If you want them to run 5 seconds apart, multiply the timeout value by i. The timeout is measured from when you call setTimeout, not when the previous function ran.

for (let i in LS) {
    setTimeout(() => yourFunction(LS[i]), i * 5000);
}

CodePudding user response:

textInput = document.getElementById("theText");
textArray = textInput.value.split(/\n/g);




const delayLoop = (fn, delay) => {
  return (line, i) => {
    setTimeout(() => {
      useTheText(line);
    }, i * 5000);
  }
};



function useTheText(line){
  console.log(line);
}

const handleClick = () => {
textInput.value.split(/\n/g).forEach(delayLoop(useTheText, 500));

}
<textarea id="theText" name="theText"
          rows="5" cols="33">
It was a dark and stormy night...
second line
line 3
</textarea>

<div>
<button onClick="handleClick()">process</button>
</div>
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>

  • Related