2012-02-07 39 views
1

我有這個JavaScript的功能,倒計時直到你可以點擊下載按鈕,但是我想它一旦點擊它,要麼再次禁用或開始倒計時,最好是禁用。重新啓動計數器點擊或禁用它 - Javascript

這是JavaScript。

<script type="text/javascript"> 
    x = 10; 
    function countdown() { 
    if (x > 1) { 
     x--; 
     document.getElementById("button").innerHTML = x; 
     r = setTimeout("countdown()",1000); 
    } 
    else { 
     clearTimeout(r); 
     document.getElementById("button").innerHTML = "Click to download"; 
     document.getElementById("button").disabled = ""; 
    } 
    } 
    r = setTimeout("countdown()",1000); 

</script> 

這裏是按鈕,

<label><font size="5">Your download will start in: </label><a href="download.php?shortURL=<?php echo $fullfile; ?>"><button class="btn orange" id="button" disabled="disabled" onclick="window.location.reload()" >10</button></font></a> 

謝謝!

+0

? – 2012-02-07 18:37:15

+1

請注意,您的HTML格式不正確 - ''標籤必須在關閉'

+0

沒問題,我只是想當你點擊按鈕時,讓櫃檯再次啓動 – HarryBeasant 2012-02-07 18:40:21

回答

1

我相信這是你需要的代碼:什麼是給你的問題

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
    <title></title> 
    <script type="text/javascript"> 
     var x = 10; 
     var r = 0; 
     function countdown() { 
      if (x > 1) { 
       x--; 
       document.getElementById("button").innerHTML = x; 
       r = setTimeout("countdown()",1000); 
      } 
      else { 
       clearTimeout(r); 
       document.getElementById("button").innerHTML = "Click to download"; 
       document.getElementById("button").disabled = ""; 
       document.getElementById("button").onclick = function() { 
        document.getElementById("button").disabled = "disabled"; 
       }; 

      } 
     } 
     setTimeout("countdown()",1000); 
    </script> 
</head> 
<body> 
<label> 
    <font size="5">Your download will start in:</font> 
</label> 
<a href="download.php?shortURL=<?php echo $fullfile; ?>" target="_blank"> 
    <button class="btn orange" id="button" disabled="disabled">10</button> 
</a> 
</body> 
</html> 
+0

是的,這工作得很好,還有一件事,我怎麼能說,在按鈕「下載將開始於:」10「,但只有數字改變? – HarryBeasant 2012-02-07 19:17:04

+0

我編輯了代碼對不起: ) – tftd 2012-02-07 20:00:49

3

要重新開始倒計時,你可以創建一個函數來從onclick事件的按鈕,清除任何現有的定時器和重置計數器變量,然後調用這個函數:

function resetCountdown() { 
    clearTimeout(r); 
    x = 10; 
    countdown(); 
} 

要禁用按鈕,您可以將其設置爲禁用:

document.getElementById("button").disabled = "disabled"; 
1

首先爲什麼UR使用window.location.reload()..它是什麼關係到你的腳本?如果不是將其刪除,並嘗試下面的jQuery代碼

 $(function(){ 
    $('#button').click(function(){ 
     $(this).attr("disabled",true); 
    }); 

,並確保包括jQuery的副本,以使其工作或包含在你的腦袋標籤下面的鏈接這個腳本

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 
+0

爲什麼你發佈了一個鏈接到1.3.2版本的jQuery? :)) – Cristy 2012-02-07 18:44:57

+0

嘿cristy ..它不是一個硬核腳本,甚至可以使用版本1,我有這個鏈接在一個我的文件,所以只是從那裏複製...你自由1.7.1 :-) – 2012-02-07 18:47:46

0

前沒有測試,但嘗試這一點。一旦顯示「點擊下載」後點擊該按鈕,該按鈕將被禁用。

<script type="text/javascript"> 
x = 10; 
function countdown() { 
    if (x > 1) { 
     x--; 
     document.getElementById("button").innerHTML = x; 
     r = setTimeout("countdown", 1000); 
    } else { 
     clearTimeout(r); 
     document.getElementById("button").innerHTML = "Click to download"; 
     document.getElementById("button").disabled = ""; 
     document.getElementById("button").onclick = function() { 
      document.getElementById("button").disabled = "disabled"; 
     }; 
    } 
} 
r = setTimeout("countdown",1000); 
</script> 
0

這應該做的伎倆:

var x = 10; 
var r = setInterval(
    function() { 
    if (x > 1) { 
     x--; 
     document.getElementById("button").innerHTML = x; 
    } 
    else { 
     clearInterval(r); 
     document.getElementById("button").innerHTML = "Click to download"; 
     document.getElementById("button").disabled = ""; 
    } 
}, 1000);