2017-04-03 2 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 사과드립니다. 오타가있었습니다. 그것은'notify (str)'이어야합니다. 또한 함수에서 코드를 분리했음을 주목하십시오. 이렇게하면 코드를 더 재사용 할 수 있고 모든 함수는 목적을 가져야하며 관련 코드 만 있어야합니다. 그러므로'notify'에는 프리젠 테이션 로직이 있고'initTimeout'에는 실제 루핑 로직이 있습니다 – Rajesh

+0

고마워요! 훌륭하게 작동합니다. – Dikeneko