执行后停止JavaScript

时间:2014-07-23 04:12:17

标签: javascript setinterval

如何在执行后停止JavaScript?

如果其他人说出关键字,我会在聊天文本中创建一个javascript用于发帖。 但脚本发送消息而不是停止。

现在代码:

setInterval(function() {
    jQuery('#frame_chatbox')
        .replaceWith('<iframe id="framejqs" src="/chatbox" scrolling="yes" width="100%" height="100%" frameborder="0"></iframe>');
    jQuery('#framejqs').contents()
        .find('#chatbox_footer #chatbox_messenger_form #submit_button')
        .click(function() {
            if(jQuery('#framejqs').contents()
                .find('#chatbox_footer #chatbox_messenger_form input[name="message"]')
                .val().indexOf('HERE THE KEYWORD') != -1) {
                    $.post('/chatbox/chatbox_actions.forum?archives',
                           {mode:"send", sent:"HERE THE MENS"});
                    return false;
            }
        });
});

http://pastebin.com/5KF9R5Rv

2 个答案:

答案 0 :(得分:0)

它重复发送消息,因为发送函数包含在每毫秒触发一次的间隔中(第二个参数丢失):

setInterval(function () {
    // ...
}, time_between_sends);

time_between_sends定义了作为第一个参数传递给setInterval的函数的不同调用之间经过的时间。

例如:

setInterval(function () {
    console.log(new Date());  // logs the date once per second (1000ms === 1s)
}, 1000);

更一般地说,我会考虑使用事件监听器而不是间隔。

答案 1 :(得分:0)

您只需使用 clearInterval

即可
var interval = setInterval(function() {
  //your code
  if(condition to stop interval)
  {
    clearInterval(interval);//clearing interval when you want
  }
});

这是Live Demo

更新

如果你想在post方法得到回复后停止它,你可以做以下事情:

DEMO

代码:

var myVar = setInterval(function(){
    var d = new Date();
    var t = d.toLocaleTimeString();
    document.getElementById("demo").innerHTML = t;
    $.post('/echo/html/','',function(){
        myStopFunction()//calling method to stop setInterval
    });
}, 1000);


function myStopFunction() {
    alert("stoping");
    clearInterval(myVar);
}