2017-04-03 127 views
0

我試圖在我的頁面上顯示「等待」,然後「等待等待」,然後「等待等待」等等,直到〜100次,我想要添加之間的時間的「等待」是隨機的,到目前爲止,我已經設法顯示出等待到100,但我不能添加間隔的隨機數。(現在我把10放到它快速結束)。設置間隔隨機+超時

我發現在這些科目的答案,但我似乎無法將它們整合到我的代碼..

setInterval + Random Number setInterval + Random Number

var timesRun = 0; 
 
     var t = "wait"; 
 
     var interval = setInterval(function(){ 
 
      timesRun += 1; 
 
      if(timesRun === 10){ 
 
       t = t + "..."; 
 
       document.getElementById("sample2-progress").innerHTML = t; 
 
       clearInterval(interval); 
 
      } 
 

 
      document.getElementById("sample2-progress").innerHTML = t; 
 
      t = t + " wait"; 
 
      
 

 
     }, 200);
#preloader { 
 
    position: fixed; 
 
    top: 0; 
 
    left: 0; 
 
    right: 0; 
 
    bottom: 0; 
 
    background-color: #000; 
 
    z-index: 99999; 
 
    height: 100%; 
 
    overflow: hidden; 
 
} 
 

 
#status { 
 
    width: 100%; 
 
    height: 100%; 
 
    position: absolute; 
 
    left: 0%; 
 
    color: white; 
 
    top: 0%; 
 
    background-repeat: no-repeat; 
 
    background-position: center; 
 
    /*margin: -50% 0 0 -50%;*/ 
 
    text-align: center; 
 
} 
 

 
#sample2-log{ 
 
    \t display: none; 
 
} 
 

 
#sample2-progress{ 
 
    \t font-size: 6vh; 
 
top: 2vw; 
 
position: fixed; 
 
text-align: center; 
 
width: 98vw; 
 
left: 2vw; 
 
text-align:left; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div id="preloader"> 
 

 
    <div id="status"> 
 
     <textarea id="sample2-log"></textarea> 
 
     <div id="sample2-progress" class="progress"></div> 
 
    </div> 
 

 
    </div>

+0

提供您的代碼的工作小提琴? –

+0

有一個,它在工作嗎? – Dikeneko

回答

1

在我的理解,因爲每次運行需要不同的時間間隔,所以最好使用setTimeout

注意:爲了演示目的,我保持延遲範圍長達10秒。您可以在控制檯中檢查延遲值。

示例代碼

var timesRun = 0; 
 
var t = "wait "; 
 

 
function initTimeout() { 
 
    var delay = Math.floor(Math.random() * 1000000) % 10000; 
 
    console.log(delay) 
 
    setTimeout(function() { 
 
    var str = "..."; 
 
    if (++timesRun < 10) { 
 
     str = t 
 
     initTimeout(); 
 
    } 
 
    notify(str); 
 
    }, delay); 
 
} 
 

 
function notify(str) { 
 
    document.getElementById("sample2-progress").innerHTML += str; 
 
} 
 
initTimeout();
#preloader { 
 
    position: fixed; 
 
    top: 0; 
 
    left: 0; 
 
    right: 0; 
 
    bottom: 0; 
 
    background-color: #000; 
 
    z-index: 99999; 
 
    height: 100%; 
 
    overflow: hidden; 
 
} 
 

 
#status { 
 
    width: 100%; 
 
    height: 100%; 
 
    position: absolute; 
 
    left: 0%; 
 
    color: white; 
 
    top: 0%; 
 
    background-repeat: no-repeat; 
 
    background-position: center; 
 
    /*margin: -50% 0 0 -50%;*/ 
 
    text-align: center; 
 
} 
 

 
#sample2-log { 
 
    display: none; 
 
} 
 

 
#sample2-progress { 
 
    font-size: 6vh; 
 
    top: 2vw; 
 
    position: fixed; 
 
    text-align: center; 
 
    width: 98vw; 
 
    left: 2vw; 
 
    text-align: left; 
 
}
<div id="preloader"> 
 
    <div id="status"> 
 
    <textarea id="sample2-log"></textarea> 
 
    <div id="sample2-progress" class="progress"></div> 
 
    </div> 
 
</div>

+0

非常感謝!唯一不起作用的是最後加上「......」,我會試着弄清楚這一點。 – Dikeneko

+0

@Dikeneko我的歉意。有一個錯字。它應該是'通知(str)'。另外請注意,我將函數中的代碼分開。這將使你的代碼更加可重用,每個函數都應該有一個目的,只有相關的代碼應該在那裏。因此'notify'具有表示邏輯,'initTimeout'具有實際的循環邏輯 – Rajesh

+0

謝謝!很棒。 – Dikeneko