2012-06-23 76 views
2

我想在likeMe()循環完成後添加5秒的延遲。一旦finsh我想觸發點擊Facebook的註銷按鈕。在Javascript/jQuery的循環結尾添加延遲

我很愚蠢,當談到JavaScript的語義;因此我不知道如何觸發這些?考慮到這一點,我將如何在循環結束後添加此效果:

我通常使用.promise().done()來完成循環後的最後步驟,但我不知道如何在JavaScript中放置此$.delay(5000).promise().done($('input[value="Log Out"]').click());

背景:使用arudino創建安裝藝術品,處理和& greasemonkey jQuery。

完整的腳本:

unsafeWindow.likeMe = likeMe; 
function likeMe() 
{ 

     input = document.getElementsByTagName("input"); 
     for(i = 0; i < input.length; i++) 
     { 
      myID = input[i].getAttribute("data-profileid"); 
      if(myID != null && myID.indexOf("342584172457437") >= 0) 
       input[i].click(); 
     } 
     $.delay(5000).promise().done($('input[value="Log Out"]').click()); 
     // this is wrong but yeah i have no clue where or how to put it on here. 

} 


$(window).load(function(){ 

    var isCtrl = false; 
    document.onkeyup=function(e) { 
     if(e.which == 17) isCtrl=false; 
    } 
    document.onkeydown=function(e){ 
     if(e.which == 17) isCtrl=true; 
     if(e.which == 46 && isCtrl == true) { 
      likeMe() 

      return false; 
     } 
    } 

}); 
+0

你必須使用settimeout而不是延遲 –

+0

檢測循環結束,if(input.length == -1){setTimeout(function(){// code here},5000);}' – Ohgodwhy

回答

2

您可以使用setTimeout

function likeMe() 
{ 

    input = document.getElementsByTagName("input"); 
    for(i = 0; i < input.length; i++) 
     { 
      myID = input[i].getAttribute("data-profileid"); 
      if(myID != null && myID.indexOf("342584172457437") >= 0) 
      input[i].click(); 
     } 

    setTimeout(function() { 
     $('input[value="Log Out"]').click(); 
    }, 5000); 

} 

或內部onkeydown

document.onkeydown=function(e){ 
     if(e.which == 17) isCtrl=true; 
     if(e.which == 46 && isCtrl == true) { 
      likeMe(); 
      setTimeout(function() { 
       $('input[value="Log Out"]').click(); 
      }, 5000); 
      return false; 
     } 
    } 

但不都在同一時間。

+0

該死的快樂你讓我在autofollow不是嗎?!你回答我所有的問題! –

+0

@MatthewHarwood,諾普先生我沒有。也許是巧合。 :) –

+0

無論如何,這將是最有效的跟蹤形式:] – Cranio

0

使用setTimeout()這樣的:

setTimeout(function() { 
    $('input[value="Log Out"]').click(); 
}, 5000); 

,以在五秒鐘內執行的功能。

+0

where我會把這個偉大的循環? –

+0

或者likeMe()之後; –

+0

只要你想開始5秒,就把它放好。我會假設你在'for'循環完成執行後放置它。 – jfriend00