clearInterval没有终止

时间:2016-11-07 14:03:31

标签: javascript

这是我正在处理的自动标记脚本。它可以在9gag帖子上实现。(http://9gag.com/gag/ *)

var division1 = ["@haxxorsid10 @haxxorsid11 @haxxorsid12", "@haxxorsid0"];
var i = 1;

window.onkeydown = function(e){

  if(e.keyCode == 113){ 
    document.getElementsByClassName("post-text-area")[0].value = division1[0];
    document.getElementsByClassName("cmnt-btn")[0].click();


var repeat = setInterval(function start(){
if(i == division1.length - 1)
    clearInterval(repeat);
document.getElementsByClassName("reply")[0].click();
document.getElementsByClassName("post-text-area")[1].value = division1[i];
document.getElementsByClassName("cmnt-btn")[1].click(); 
i++;
  },2000);}};

即使在对division1的所有元素进行注释之后,问题仍然存在,它会继续在注释中对undefined进行评论。似乎clearInterval永远不会被执行。

2 个答案:

答案 0 :(得分:0)

第一次点击i=1然后第二次点击它会计算i=2。所以if条件没有通过。所以我在clearinterval时重置了i值。所以每个点击计数的时间将重新开始。

并且你也没有在if条件中添加括号if{}



var division1 = ["@haxxorsid10 @haxxorsid11 @haxxorsid12", "@haxxorsid0"];
var i = 1;

window.onkeydown = function(e){

  if(e.keyCode == 113){ 
  

var repeat = setInterval(function start(){
  
 
if(i == division1.length - 1){
    clearInterval(repeat);
  i=0;//its will restart the count 2 time click
console.log('stop');
  }
  else{
  console.log('loop run')
  }
i++;
  },2000);}};




答案 1 :(得分:-3)

嗯,问题只是通过在if。附近应用花括号来解决。

if(i == division1.length - 1){
    clearInterval(repeat);
}

它解决了这个问题,但是为什么花括号成功了......