2016-12-01 82 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:5」根據maxClick變量 –

+1

使用'alert(「Clicked Link:」+ i);'而不是'alert(「Clicked Link:」+ element.length);' –

回答

2

好像你的代碼正常運行。當(i == maxClick)interval被清除,因此第二個if塊不會被執行。我假設你感到困惑,因爲你在兩個區塊中使用相同的警報值。請嘗試這樣做:

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

謝謝它的作品! –