setInterval和clearInterval javascript无法按需工作
setInterval and clearInterval javascript not working as needed
以下代码正在部分运行。我是javascript的新手,所以如果我的方法不是最好的,请不要责怪我。
window.url_var = "status.htm";
window.elem = "#e1";
function menu_item(){
$(window.elem).click(function (event)
{
$("#divTestArea1").load(window.url_var);
});
}
$("#e1").click(function (event)
{
event.preventDefault();
window.url_var = "demo2.txt";
window.elem = "#e1";
$("#divTestArea1").load(window.url_var);
auto_refresh = setInterval(menu_item(), 5000);
});
$("#e2").click(function (event)
{
event.preventDefault();
window.url_var = "status.htm";
window.elem = "#e2";
$("#divTestArea1").load(window.url_var);
auto_refresh = setInterval(menu_item(), 5000);
});
$("#e3").click(function (event)
{
event.preventDefault();
window.url_var = "form.htm";
window.elem = "#e3";
clearInterval(auto_refresh);
$("#divTestArea1").load(window.url_var);
});
jQuery(document).ready(function() {
$("#divTestArea1").load(window.url_var);
auto_refresh = setInterval(menu_item(), 5000);
});
每当我单击元素e1和e2时,setInterval就会按预期工作,只要我单击元素e3,该元素就会停止重新加载。
到目前为止,这就是我想要的行为。但如果e1或e2再次被点击,我也想再次启动setinterval。
最后一个是它在上面的代码中没有工作的地方。
如果你能给我指明正确的方向,我将不胜感激。
在看到我最初问题的一些答案后,我来到了这个代码(感谢大家)。为了澄清我最初的想法,我需要定期更新网页上的一些项目,但内容可以通过一些菜单进行更改,而且一些内容(如表格)不应该更新。
window.url_var = "demo2.txt";
var auto_refresh = null;
function setRefresh() {
var self = this;
this.bar = function() {
if(window.url_var != ""){
$("#divTestArea1").load(window.url_var);
auto_refresh = setTimeout(function() { self.bar(); }, 5000);
}
}
this.bar();
}
$("#e1").click(function (event)
{
event.preventDefault();
window.url_var = "demo2.txt";
setRefresh();
});
$("#e2").click(function (event)
{
event.preventDefault();
window.url_var = "status.htm";
setRefresh();
});
$("#e3").click(function (event)
{
event.preventDefault();
window.url_var = "form.htm";
$("#divTestArea1").load(window.url_var);
window.url_var = "";
});
$(document).ready(function() {
setRefresh();
});
尝试使用两个不同的变量,并在需要时全部清除。这是:auto_refresh1和auto_refreth2。每次调用setinterval时,它都会创建一个具有新id的新计时器。您正在覆盖auto_refresh变量,在此之前的计时器仍将启动。
或者,您可以将setinterval存储在一个散列对象中,然后运行并清除它们。
我不清楚你在这里到底想做什么。尽管如此,我还是稍微重写了您的代码以进行一些改进(并修复了代码中涉及setInterval
调用的一个明显错误)。
var url_var = "status.htm",
elem = "#e1",
$destination = $("#divTestArea1"),
auto_refresh;
function menu_item() {
$(elem).bind("click", function (e) {
$destination.load(url_var);
});
}
function load() {
$destination.load(url_var);
}
function set(url, id) {
url_var = url;
elem = id;
}
function setRefresh() {
return setInterval(menu_item, 5000);
}
function handleClick(e) {
e.preventDefault();
set(e.data.url, e.data.id);
load();
auto_refresh = setRefresh();
}
$("#e1").on("click", {
url: "demo2.txt",
id: "#e1"
}, handleClick);
$("#e2").on("click", {
url: "status.htm",
id: "#e2"
}, handleClick);
$("#e3").on("click", function (e) {
e.preventDefault();
set("form.htm", "#e3");
clearInterval(auto_refresh);
load();
});
$(document).ready(function () {
load();
auto_refresh = setRefresh();
});
我猜,也许那些setInterval
调用实际上应该是setTimeout
调用?为什么要一次又一次地绑定"单击"事件处理程序?
EDIT#1:从bind
方法切换到jQuery当前首选的on
方法,包括使用事件数据参数来进一步抽象事件处理代码。
相关文章:
- setInterval和clearInterval javascript无法按需工作
- clearInterval停止setInterval纯粹基于时间工作
- webworker中的clearInterval不工作
- 窗口clearInterval()在没有参数的情况下工作
- clearInterval() 无法正常工作
- 如何使 clearInterval 函数工作
- Javascript/jQuery似乎无法让ClearInterval工作
- 我可以't使clearInterval工作:/
- JavaScript clearInterval只工作一次
- clearInterval不工作(或者可能是setTimeout)
- 重置倒计时间隔与clearInterval不工作
- ClearInterval不能正确工作
- 为什么clearInterval(..)似乎没有在这里完成它的工作
- Javascript - clearInterval不工作时,多个setInterval
- clearInterval不工作,Interval未定义
- clearInterval不能与setInterval一起工作
- 为什么这个clearInterval不工作
- clearInterval也不像我期望的那样工作
- 如何使window.clearInterval()与这个javascript代码一起工作
- setInterval和clearInterval没有按预期工作