如果未显示内容,则停止javascript执行
我有一个div,它包含一个javascript,每X秒更新一次div,但是当我用另一个上下文替换div的内容时,我希望javascript停止,因为它返回旧内容并覆盖当前内容。 在这种情况下,如何停止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>
<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>