【发布时间】:2011-12-11 21:43:20
【问题描述】:
我制作了一个图片库,并且使用了 AJAX。下面是相关的代码。
if (isset($_POST['stopss'])){
echo'<script type="text/javascript">
clearTimeout(setss);
</script>';
}
if (isset($_POST['startss'])){
?>
<script type="text/javascript">
var setss = window.setTimeout('delayer(\''+src+'\',\''+dir+'\',\''+title+'\',\''+width+'\',\''+height+'\',\''+img+'\')',5000);
</script>
<?
}
delayer 函数为新的模态框窗口(新的 AJAX 请求)传递参数。 我看到的问题。当用户单击幻灯片按钮时,超时开始。 即使他们按下停止幻灯片按钮(这会重新加载 AJAX 页面),计时器仍在运行(在后台)并且在 clearTimeout(setss) 中,sets 不再可用(因为新的 AJAX 页面请求)所以 clearTimeout清除失败。
有什么办法可以终止在后台运行的超时?即使 modalbox 窗口关闭,5 秒后它也会打开并愉快地继续播放幻灯片。
顺便说一句,这是模态框调用。 Modalbox.show('../b-gal-scripts/ajaxgal.php', {title: title, overlayOpacity: .1, width: width, height: height, method: 'post', params: {src: next,目录:目录,img:img,ssimg:下一个}});返回错误;
【问题讨论】:
-
不是答案,但每次有人将字符串传递给
setTimeout,上帝就会杀死一只小猫。var setss = window.setTimeout(function() { delayer(src, dir, title, width, height, img) }, 5000);.
标签: javascript settimeout