2016-12-01 51 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

谢谢它的作品! –