我已经提出了以下代码,它允许用户在将电影重定向到页面之前查看嵌入了30秒的电影的页面。此外,他们可以点击链接以使用此倒计时隐藏div。如果点击该链接,我需要帮助的是取消重定向(阻止其发生),以便用户可以继续观看完整的电影。在此先感谢您的帮助!
使用Javascript:
<script type="text/javascript">
var settimmer = 0;
$(function(){
window.setInterval(function() {
var timeCounter = $("b[id=show-time]").html();
var updateTime = eval(timeCounter)- eval(1);
$("b[id=show-time]").html(updateTime);
if(updateTime == 0){
window.location = ("redirect.php");
}
}, 1000);
});
</script>
<script type="text/javascript">
$(document).ready(function(){
$(".slidingDiv").show();
$(".show_hide").show();
$('.show_hide').click(function(){
$(".slidingDiv").slideToggle();
});
});
</script>
HTML:
<div id="my-timer" class="slidingDiv">
You have <b id="show-time">30</b> seconds to decide on this movie.
<a href="#" class="show_hide">Yes, I want to watch this one!</a>
</div>
答案 0 :(得分:2)
setInterval
返回一个值,您可以通过clearInterval
取消间隔计时器。所以:
$(function(){
// +--- Remember the value from `setInterval
// |
// v
var timerHandle = window.setInterval(function() {
var timeCounter = $("b[id=show-time]").html();
var updateTime = eval(timeCounter)- eval(1);
$("b[id=show-time]").html(updateTime);
if(updateTime == 0){
window.location = ("redirect.php");
}
}, 1000);
// + Hook up a handler for the link that uses the handle to clear it
// |
// v
$("selector_for_the_link").click(function() {
clearInterval(timerHandle);
timerHandle = 0;
});
});
请注意,我已将变量放在中ready
函数中,因此它不是全局函数。
偏离主题:您不需要或想要在上面使用eval
(实际上,您根本不想使用eval
,因为任何东西)。如果要解析字符串以生成数字,请使用parseInt
(并且没有任何理由来评估像1
这样的文字。所以这一行:
var updateTime = eval(timeCounter)- eval(1);
变为
var updateTime = parseInt(timeCounter, 10) - 1;
(10
表示字符串是十进制的 - 例如,基数为10。)
答案 1 :(得分:0)
您需要使用clearInterval方法。
答案 2 :(得分:0)
也许您可以使用setTimeout()而不是setInterval()。这是一个sample。