我試圖用js做一個「控制檯打字效果」,並且在下一個功能中我帶一個元素的文本,然後使用「for」循環切割文本並在延遲內粘貼。setTimeout在一個for循環內不執行傳遞給它的函數
在Chrome中調試代碼後,我可以看到JavaScript不運行setTimeout ...它只是忽略它。
function type() {
var text = document.querySelector('.console-effect').textContent;
for (var i = 0; i <= text.length; i++) {
setTimeout(function() {
document.querySelector('.console-effect').textContent = text.substr(0, i)
}, 50);
}
}
type();
你說的 「它根本不理會」 的setTimeout是什麼意思?你有沒有把調試'console.log()'放在那裏,看看匿名函數是否在運行?無論如何,我可以立即看到你將遇到問題。您需要爲循環的每次迭代「關閉」「i」的值,否則您的代碼將無法按預期運行。嘗試在閉包中封裝'setTimeout()'調用。 – jered