在下载页面上,我希望当页面加载时自动启动一个10秒的计时器。在页面上,我希望有一些文本提示,如“您可以在10秒内开始下载...”然后,在时间到达后,会出现一个下载按钮供人们点击并开始下载。
我该如何做到这一点,并使用哪些代码将其包含到页面中?
我该如何做到这一点,并使用哪些代码将其包含到页面中?
虽然它是向后兼容的,但不太安全。不过,短短10秒并不用太担心。
您可以使用setInterval()
来实现这一功能。
请注意,确保countdownElement
有一个现有的文本节点,它可以是任何空格。如果无法保证,请使用innerHTML
或innerText/textContent
。
window.onload = function() {
var countdownElement = document.getElementById('countdown'),
downloadButton = document.getElementById('download'),
seconds = 10,
second = 0,
interval;
downloadButton.style.display = 'none';
interval = setInterval(function() {
countdownElement.firstChild.data = 'You can start your download in ' + (seconds - second) + ' seconds';
if (second >= seconds) {
downloadButton.style.display = 'block';
clearInterval(interval);
}
second++;
}, 1000);
}
<div id="countdowntimertxt" class="countdowntimer">00:00:00</div>
<script type="text/javascript">
var sTime = new Date().getTime();
var countDown = 3700; // Number of seconds to count down from.
function UpdateCountDownTime() {
var cTime = new Date().getTime();
var diff = cTime - sTime;
var timeStr = '';
var seconds = countDown - Math.floor(diff / 1000);
if (seconds >= 0) {
var hours = Math.floor(seconds / 3600);
var minutes = Math.floor( (seconds-(hours*3600)) / 60);
seconds -= (hours*3600) + (minutes*60);
if( hours < 10 ){
timeStr = "0" + hours;
}else{
timeStr = hours;
}
if( minutes < 10 ){
timeStr = timeStr + ":0" + minutes;
}else{
timeStr = timeStr + ":" + minutes;
}
if( seconds < 10){
timeStr = timeStr + ":0" + seconds;
}else{
timeStr = timeStr + ":" + seconds;
}
document.getElementById("countdowntimertxt").innerHTML = timeStr;
}else{
document.getElementById("countdowntimertxt").style.display="none";
clearInterval(counter);
}
}
UpdateCountDownTime();
var counter = setInterval(UpdateCountDownTime, 500);
</script>
没有人能确保你的时间间隔是精确的,特别是当标签页(或浏览器)处于非活动状态时(参见例如这篇文章),因此最好依靠时间差而不是计数器:
var sTime = new Date().getTime();
var countDown = 30;
function UpdateTime() {
var cTime = new Date().getTime();
var diff = cTime - sTime;
var seconds = countDown - Math.floor(diff / 1000);
//show seconds
}
UpdateTime();
var counter = setInterval(UpdateTime, 500);
这个可用的代码示例。
我正在写一个带有代码的回复,但是Alex的回复比我的快速而粗糙的解决方案更好。
请注意,如果您想做类似Rapidshare和其他网站的事情,您将不得不在服务器端生成链接,并通过AJAX检索它,否则任何想立即获取下载的人只需要查看您页面的源代码即可。
这很简单,你可以很容易地完成它。以下是实时链接,在此链接中,您可以找到制作倒计时器的代码,直到下载链接出现为止:http://www.makingdifferent.com/make-countdown-timer-download-button-link-appears/
干杯!
你可以使用 JavaScript 的 setTimeout
函数:
// make the button not visible
setTimeout(()=>{
// here make button visible and clickable
},10000)
// here 10000 -> 10 seconds timeout