2012-02-07 6 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

あなたに問題を与えていますか? –

+1

あなたのHTMLが不正です。「」タグは、「

+0

問題はありません。ボタンをクリックすると、カウンタが再び開始されるようにしたいだけです。 – HarryBeasant

答えて

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

はい、これは素晴らしい、もう1つのこと、どのように私は言うことができますボタンで "ダウンロードが開始されます:" 10 "、しかし番号の変更だけ? – HarryBeasant

+0

私はコードを編集しました。 ) – tftd

3

あなただけの既存のタイマをクリアして、カウンタ変数をリセットするために関数を作成してから、ボタンのonclickイベントからこの関数を呼び出すことができ、再びカウントダウンを開始するには、次のボタンを無効にするには

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

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

最初になぜwindow.location.reload()を使用していますか?..あなたのスクリプトに関連するものですか?このスクリプト

<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

+0

ちょっとクリスティ..それはハードコアのスクリプトではなく、バージョン1で作業することもできます。私はこのリンクを1つのファイルに入れていましたので、そこからコピーしました...あなたは1.7.1まで無料です:-) –

0

前にそれを削除し、以下のjqueryのコード

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

を試してみて、それを動作させるためにjqueryののコピーが含まれていることを確認してくださいまたはあなたの頭のタグに下記のリンクが含まれていない場合よりもテストされませんが、これを試してください。 「クリックしてダウンロード」をクリックした後でクリックすると、ボタンが無効になります。

<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); 
関連する問題