2016-07-24 105 views
0

我想在JavaScript中的for循環中斷。 我居然代碼如何在javascript中的for循環中休息

<p id="1">The video opens</p> 
     <script> 
    for(i=0; i<5; i++) { 
     myWindow = window.open("VIDEO"); 
     document.getElementById("1").innerHTML = "Wait"; 
     setTimeout(myWindow.close(), 10000); 
    } 

     </script> 

視頻應該在一個新的標籤開始,播放10秒,然後關閉。 然後它重新開始,播放anozher時間10秒,並關閉視頻等...... 但超時不是一個真正的超時。它只讓myWindow.close()在10秒後出現 這意味着,所有10個視頻都會啓動,然後在10秒鐘後,一個視頻關閉。 我該如何使它正常工作?

回答

0

我想你是說你想一個一個地做一個的十個視頻

如果是這樣,您不能使用for循環,您必須使用setInterval或鏈接系列setTimeout。我會去爲後者在這種情況下:

// IIFE to keep our variables private 
(function() { 
    // Counter 
    var i = 0; 

    // Show the first video 
    showVideo(); 

    // Function for showing the current video identified by `i` 
    function showVideo() { 
     var myWindow = window.open("VIDEO"); // Presumably use `i` here 
     document.getElementById("1").innerHTML = "Wait"; 
     setTimeout(function() { 
      // Close the window 
      myWindow.close(); 

      // Done yet? 
      if (++i < 10) { 
       // No, show the next video 
       showVideo(); 
      } 
     }, 10000); 
    } 
})(); 
+0

爲什麼在一開始有一個支架( – Korne127

+0

@ Korne127:它是建立一個行內調用的函數表達式(IIFE)的標準方法之一,參見[此回答](http://stackoverflow.com/a/13341710/157247)以獲取詳細信息。如果我們剛開始使用'function',那將是一個語法錯誤。 –

+0

我已經完成了整個功能並將其稍作改動,但它工作很好! – Korne127

-2

使用setInterval函數更改setTimeout,setInterval函數用於循環,每10秒運行一次,例如,像你要的那樣。