2016-12-01 3 views
0

루프 작업이있는 스크립트를 만들고이 스크립트를 중지 할 수있는 조건을 지정합니다. 첫 번째 if이 제대로 작동하지만 두 번째 스크립트는 제대로 작동하지 않습니다. maxClick을 설정하면 스크립트가 if 조건을 무시하고 스크립트를 계속 실행합니다.Javascript가 예상대로 작동하지 않는 경우

여기에 코드가 제대로 실행처럼

var className = ".link" ; 
 
var delay  = 0.1 * 1000 ; //0.1 Seconds 
 
var maxClick  = 5; 
 

 

 
//Bind event handler 
 
var element = document.querySelectorAll(className); 
 
for (var j = 0; j < element.length; j++) { 
 
    element[j].addEventListener('click', function() { 
 
     // Optional Function On Click Event 
 
    }, false) 
 
} 
 

 
var i = 0 ; 
 
function change() { 
 
    if (i == maxClick) { 
 
     clearInterval(interval); 
 
     alert("Clicked Link: " + element.length); 
 
    } 
 
    if (i == element.length && interval) { 
 
     clearInterval(interval); 
 
     alert("Clicked Link: " + element.length); 
 
    } 
 
    element[i++].click(); 
 
} 
 

 
change(); 
 
var interval = setInterval(change, delay);
<a class="link">Link</a> 
 
<a class="link">Link</a> 
 
<a class="link">Link</a> 
 
<a class="link">Link</a> 
 
<a class="link">Link</a> 
 
<a class="link">Link</a> 
 
<a class="link">Link</a> 
 
<a class="link">Link</a> 
 
<a class="link">Link</a> 
 
<a class="link">Link</a> 
 
<a class="link">Link</a> 
 
<a class="link">Link</a> 
 
<a class="link">Link</a> 
 
<a class="link">Link</a>

Here's the fiddle

+0

예상되는 결과는 무엇입니까? – FreedomPride

+0

"경고 ("Clicked Link : "+ element.length)"대신 maxClick 변수 –

+1

에 따라 "Clicked Link : 5"경고를 표시해야합니다. –

답변

2

것 같다 내 스크립트의 전체입니다. (i == maxClick)interval이 지워지면 두 번째 if 블록이 실행되지 않습니다. 두 블록 모두에서 동일한 경고 값을 사용하고 있기 때문에 혼란스러워합니다. 대신 다음을 시도하십시오.

if (i == maxClick) { 
    clearInterval(interval); 
    alert("Clicked Link: " + i); 
} 
+0

고마워요 !! –

관련 문제