梵蒂岡之花
2019-10-21 15:36:48
這是我第一次真正接觸JavaScript。當(dāng)然,我曾經(jīng)使用過它,但是我從未真正寫過任何東西。無論如何,我遇到了一個(gè)非常奇怪的問題,希望有人可以幫我解決。我正在嘗試使div的文本從黑變白。很簡單,是嗎?以下代碼有效。它將顏色更改為白色,但是,忽略了500ms的setTimeout時(shí)間。如果您使用Chrome瀏覽器并查看JS控制臺(tái),您將很容易看到doFade()方法幾乎是即時(shí)調(diào)用的,而不是每500毫秒調(diào)用一次。誰能解釋一下?var started = false;var newColor;var div;var hex = 0;function fadestart(){ if (typeof fadestart.storedColor == 'undefined') { div = document.getElementById('test'); fadestart.storedColor = div.style.color; } if(!started){ console.log('fadestart'); newColor = fadestart.storedColor; started = true; setTimeout(doFade(), 500); }}function fadestop(){ console.log('fadestop'); div.style.color = fadestart.storedColor; started = false; hex = 0;}function doFade(){ if(hex<=238){ console.log(hex); hex+=17; div.style.color="rgb("+hex+","+hex+","+hex+")"; setTimeout(doFade(), 500); }}
3 回答

瀟瀟雨雨
TA貢獻(xiàn)1833條經(jīng)驗(yàn) 獲得超4個(gè)贊
您需要?jiǎng)h除上的括號(hào)doFade()。
括號(hào)會(huì)立即調(diào)用該函數(shù)。
只需使用它: doFade

鳳凰求蠱
TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超4個(gè)贊
setTimeout(doFade(), 500);
這一行說“ execute doFade(),然后將返回的值傳遞給setTimeout,它將在500毫秒后執(zhí)行此返回值”。即,您是doFade()在現(xiàn)場(chǎng)打電話。
跳過括號(hào)將函數(shù)傳遞給setTimeout:
setTimeout(doFade, 500);

波斯汪
TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊
我認(rèn)為您應(yīng)該使用setTimeout(doFade, 500);
或setTimeout("doFade()", 500);
添加回答
舉報(bào)
0/150
提交
取消