ねえ、どうすればダウンロードリンクを非表示にして、カウントダウンタイプのものを作成できますか。たぶんそれを10からカウントダウンして、ダウンロードリンクが表示されるようになったら、jsで実行するのが最善でしょうか?
誰かがこれを行う方法を知っていますか?:D
ありがとう
ねえ、どうすればダウンロードリンクを非表示にして、カウントダウンタイプのものを作成できますか。たぶんそれを10からカウントダウンして、ダウンロードリンクが表示されるようになったら、jsで実行するのが最善でしょうか?
誰かがこれを行う方法を知っていますか?:D
ありがとう
完全な例:
<span id="countdown"></span>
<a id="download_link" href="download.zip" style="display:none;">Download</a>
<noscript>JavaScript needs to be enabled in order to be able to download.</noscript>
<script type="application/javascript">
(function(){
var message = "%d seconds before download link appears";
// seconds before download link becomes visible
var count = 10;
var countdown_element = document.getElementById("countdown");
var download_link = document.getElementById("download_link");
var timer = setInterval(function(){
// if countdown equals 0, the next condition will evaluate to false and the else-construct will be executed
if (count) {
// display text
countdown_element.innerHTML = "You have to wait %d seconds.".replace("%d", count);
// decrease counter
count--;
} else {
// stop timer
clearInterval(timer);
// hide countdown
countdown_element.style.display = "none";
// show download link
download_link.style.display = "";
}
}, 1000);
})();
</script>
setTimeout関数を見てください。あなたは次のようなことをすることができます:
function displayLink() {
document.getElementById('link_id').style.display = 'block';
}
setTimeout(displayLink, 10000);
これにはsetIntervalを使用できます。setIntervalはタイマーのように動作し、特定の関数を定期的に実行できます。このような何かが仕事をするはずです(テストされていない):
$(".link").hide();
var iteration = 0;
var timer = setInterval(function() {
if(iteration++ >= 10) {
clearTimeout(timer);
$(".link").show();
$(".counter").hide();
}
$(".counter").text(10 - iteration);
}, 1000);
これにより、最初はダウンロードリンクが非表示になり、10からカウントダウンする関数が毎秒実行されます。10に達すると、カウンターが非表示になり、リンクが表示されます。ClearTimeoutは、10に達した後にカウントされないようにするために使用されます。デルのように簡単です。
編集:コメントで述べたように、この関数はjQueryを使用して要素を検索しています。
var WAIT_FOR_SECONDS = 10;
var DOWNLOAD_BUTTON_ID = "btnDownload";
if (document.body.addEventListener) {
document.body.addEventListener("load", displayDownloadButton, false);
} else {
document.body.onload = displayDownloadButton;
}
function displayDownloadButton(event) {
setTimeout(function() {
_e(DOWNLOAD_BUTTON_ID).style.display = "";
}, WAIT_FOR_SECONDS*1000);
}
function _e(id) {
return document.getElementById(id);
}