2011-06-21 80 views
0

我已經提出了以下代碼,它允許用戶在將電影重定向到頁面之前查看嵌入了電影的頁面30秒。此外,他們可以點擊一個鏈接來隱藏div倒數。我需要幫助的是取消重定向(阻止它發生),如果該鏈接被點擊,所以用戶可以繼續觀看完整的電影。在此先感謝您的幫助!如果按下按鈕時如何殺死JavaScript重定向?

的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> 

回答

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)

+0

非常感謝!我實現了所有的建議,並且完美地工作。 – user807755