我试图在用户点击一定间隔后加载2个不同的php文件。 这是代码片段,帮助我解决这个问题。
function load_recent_popular(recent) {
if( typeof load_recent_popular.counter == 'undefined' ) {
load_recent_popular.counter = 0;
}
if(recent==1) {
var loadUrl = "1.php";
$("#box15").load(loadUrl);
load_recent_popular.counter = 0;
}
else {
var loadUrl = "2.php";
$("#box15").load(loadUrl);
load_recent_popular.counter = 1;
}
handle = setInterval(function() {
if(load_recent_popular.counter == 0) {
loadUrl = "1.php";
}
else if(load_recent_popular.counter == 1) {
loadUrl = "2.php";
}
$("#box15").load(loadUrl);
}, 10000);
}
<a onClick="load_recent_popular(1)">Load 1</a><a onClick="load_recent_popular(2)"> Load 2</a>
<div id="box15"></div>
我尝试包含2个不同的时间间隔,每个时间间隔有两个不同的句柄,插入的模块在开始另一个之前清除1个时间间隔,但它不起作用,所以如果有人也得到解决方案,请分享。
答案 0 :(得分:2)
你最终会运行多个计时器,但除了以外它看起来还不错。对于计时器问题,您可以使用#box15
上的.data
存储计时器ID,然后在开始新计时之前调用clearTimeout
停止计时器ID。像这样:
function load_recent_popular(recent) {
var $box15 = $('#box15');
var timer = $box15.data('lrp_timer');
if(timer)
clearInterval(timer);
if( typeof load_recent_popular.counter == 'undefined' ) {
load_recent_popular.counter = 0;
}
if(recent==1) {
var loadUrl = "1.php";
$("#box15").load(loadUrl);
load_recent_popular.counter = 0;
}
else {
var loadUrl = "2.php";
$("#box15").load(loadUrl);
load_recent_popular.counter = 1;
}
$box15.data('lrp_timer', setInterval(function() {
if(load_recent_popular.counter == 0) {
loadUrl = "1.php";
}
else if(load_recent_popular.counter == 1) {
loadUrl = "2.php";
}
$("#box15").load(loadUrl);
}, 10000));
}
该技术的现场演示(更短的时间间隔,没有AJAX):http://jsfiddle.net/ambiguous/MagL4/