如果按下按钮,如何杀死javascript重定向?

时间:2011-06-21 06:22:24

标签: javascript jquery function redirect kill

我已经提出了以下代码,它允许用户在将电影重定向到页面之前查看嵌入了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>

3 个答案:

答案 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