我试图用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