2016-12-01 12 views
0

私はループアクションを持つスクリプトを作成し、このスクリプトを停止するための条件を設定します。最初のifが正常に動作していますが、2番目のものではありません。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

それは私に警告を表示する必要がありますmaxClick変数 –

+1

によると "Clicked Link:5"は警告( "Clicked Link:" + element.length)の代わりに 'alert(" Clicked Link: "+ i);'を使用します。 –

答えて

2

いっぱいです。 (i == maxClick)intervalがクリアされると、2番目のブロックifは実行されません。私は両方のブロックで同じアラート値を使用しているので混乱していると思います。代わりにこれを試してみてください:

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

ありがとう作品です! –

関連する問題