如果未显示内容,则停止javascript执行

如果未显示内容,则停止javascript执行,javascript,html,ruby-on-rails,Javascript,Html,Ruby On Rails,我有一个div,它包含一个javascript,每X秒更新一次div,但是当我用另一个上下文替换div的内容时,我希望javascript停止,因为它返回旧内容并覆盖当前内容。 在这种情况下,如何停止javascript <li><%= link_to "Run task", { :controller => "tasks_runner", :action => "task_form"}, {:remote => TRUE} %></li>

我有一个div,它包含一个javascript,每X秒更新一次div,但是当我用另一个上下文替换div的内容时,我希望javascript停止,因为它返回旧内容并覆盖当前内容。 在这种情况下,如何停止javascript

 <li><%= link_to "Run task", { :controller => "tasks_runner", :action => "task_form"}, {:remote => TRUE} %></li>
 <li><%= link_to "Monitor tasks", { :controller => "tasks_runner", :action => "monitor_tasks"}, {:remote => TRUE} %></li>

 <div class="content-module-main" id='task_runner_content'> </div>
  • “任务运行者”,:action=>“任务形式”},{:remote=>TRUE}%>
  • “任务\u运行程序”,:action=>monitor\u tasks},{:remote=>TRUE}%>
  • 每个链接都会更新div的内容。我的问题是,seconds链接使用一个表内容和一个更新表的脚本(更新task_runner_content content)更新div,当我单击第一个链接时,X秒后,由于JavaScript的存在,内容被seconds链接的内容覆盖

    更新脚本:

    <script>
    $(function() {
    $(window).ready(function() {
      setTimeout(function() {
        jQuery.ajax({
          url: "/tasks_runner/monitor_tasks",
          type: "GET",
          dataType: "script"
        });
      }, 3000); //in 3 seconds from now 
    });
    });
    </script>
    
    
    $(函数(){
    $(窗口).ready(函数(){
    setTimeout(函数(){
    jQuery.ajax({
    url:“/tasks\u runner/monitor\u tasks”,
    键入:“获取”,
    数据类型:“脚本”
    });
    },3000);//从现在起3秒钟内
    });
    });
    
    如果您使用setInterval或setTimeout更新内容(听起来像是这样),您只需在更改上下文的函数中清除计时器,如下所示:

    function update(){
        $('somediv').html('some value');
    }
    
    var _timer = setInterval(update, 1000);
    
    function replaceContext(){
        $('somediv').html('new context');
        clearInterval(_timer);
    }
    

    我想你一定是在用它来替换div的内容

    X = 3000 //number of miliseconds of your interval
    I = setInterval(function(){
         console.log("updating div");
    }, X);
    
    解决方案是在执行另一个操作时停止间隔
    I
    。您可以按如下方式使用:

    clearInterval(I);
    
    1
    第2组内容
    单击以更改内容
    var t=1;
    var timer=setInterval(函数()
    {
    $(“#d1”).html(t);
    t++;
    },1000)
    $(“#更改”)。单击(函数()
    {
    窗口清除间隔(计时器)
    $(“#d1”).html($(“#d2”).html());
    });
    
    但是如果没有提供代码,我们应该如何帮助呢?你有javascript文件吗?或者是用ruby执行的操作吗?但是如果我以我所展示的方式使用计时器,我该如何访问它呢?
                <div id="d1">1</div>
            <div id="d2">div 2 content</div>
    
            <button type="button" id="change">Click to change the content</button>
    
            <script>
    
                var t=1;
                var timer=setInterval(function()
    
                {
                    $("#d1").html(t);
                    t++;
    
                },1000)
    
                $("#change").click(function()
                {
    
                    window.clearInterval(timer)
                    $("#d1").html($("#d2").html());
    
                });
    
    
    
            </script>