魔法の関数はどうですか?
@Bradley Fosterの答えについて話すために、何度も電話をかけることsetTimeout
は信頼できません。setTimeout
ブラウザが遅れると停止します。そのため、4つの異なる方法では、順序が正しいかどうかわかりません。setTimeout
私が見せているようにネストする方が良いです。
$('#button').click(function() {
var seconds = 5, // Declare some variables for reuse
el = $('#some_link')
el.text(seconds) // Put it a five!
// Name your function so that you can call it later
setTimeout(function countdown() {
// Your countdown is already at 5, so decrement it
// Remember that you've already waited for 1000ms before reaching this line the first time
seconds--
el.text(seconds) // Set the new time left
// If the countdown is not over, recall this function after 1000ms
if (seconds > 0) {
setTimeout(countdown, 1000)
}
// If it is over, display the link
// Note that js will stop there and not try to call itself another time as it would with setInterval()
else {
el.html('<a href="link">Download</a>')
}
}, 1000)
})
ところで、あなたの質問では、あなたがしているとき$(function() {...
、あなたは実際にやってい$(document).ready(function() {...
ます。私はこれがあなたが望んでいたものではないと思います:)
ここのJsfiddle:http: //jsfiddle.net/Ralt/kTbcm/