0

In the example below I want to pause the script after changing the style of element one. Then after 500 miliseconds, proceed to change the style of element two. As setTimeout() requires a function parameter, how do I achieve this without delaying the entire function?

Note: the function is called by onclick="myFunction()" on an HTML element.

function myFunction() {

    // Declare some variables
    var elementOne = document.getElementById("classElementOne");
    var elementTwo = document.getElementById("classElementTwo");

    // Execute for element 1
    elementOne.style.cssText = "some styles";

    // Wait 500 miliseconds

    // Execute for element 2
    elementTwo.style.cssText = "some styles";
}
Al John
  • 612
  • 5
  • 24

3 Answers3

1

As setTimeout() requires a function parameter, how do I achieve this without delaying the entire function?

You can use setTimeout() and pass a function which changes the style for element 2.

It doesn't delay your the entire function. (In your example myFunction). Instead it just delays the execution of the anonymous function which you pass in as a parameter.

function myFunction() {

    // Declare some variables
    var elementOne = document.getElementById("classElementOne");
    var elementTwo = document.getElementById("classElementTwo");

    // Execute for element 1
    elementOne.style.cssText = "some styles";

    // Wait 500 miliseconds
    setTimeout(function(){ 
     // Execute for element 2
     elementTwo.style.cssText = "some styles"; 
     }, 500);
}
Rifky Niyas
  • 1,737
  • 10
  • 25
0

I guess you would just put the Code you want delayed inside an anonymous function like so:

function myFunction() {

    // Declare some variables
    var elementOne = document.getElementById("classElementOne");
    var elementTwo = document.getElementById("classElementTwo");

    // Execute for element 1
    elementOne.style.cssText = "some styles";

    // Wait 500 miliseconds

    // Execute for element 2
    setTimteout(() => {
        elementTwo.style.cssText = "some styles";
    }, 500);
}
Leander Hass
  • 162
  • 2
  • 3
  • 13
0
function myFunction() {

    // Declare some variables
    var elementOne = document.getElementById("classElementOne");
    var elementTwo = document.getElementById("classElementTwo");

   // Execute for element 1
   elementOne.style.cssText = "some styles";

   // Wait 500 miliseconds

   // Execute for element 2
   setTimteout(() => {
     elementTwo.style.cssText = "some styles";
   }, 500);  
}
Mahesh
  • 355
  • 1
  • 12