javascript - “未捕获的 TypeError:回调不是函数” - 为什么会这样?
问题描述
我试图在 javascript 中创建一个“打字机”效果,它给出了“拼写”然后从数组中“删除”单词的外观。我有一个拼写出每个单词的“拼写”函数,我想为“删除”函数添加一个回调,这样一旦单词输入完毕,它就会开始删除。
但是,当我尝试附加回调时,我不断收到以下错误:
main.js:35 Uncaught TypeError: callback is not a function
at spell (main.js:35)
at main.js:32
它引用了以下代码块中的倒数第二行:
// SPELL OUT WORD FUNCTION
function spell(x, callback, length) {
setTimeout(() => {
wordBox.innerHTML += letterArray[wordLength - x];
if (--x) spell(x);
}, randTime);
callback(length); // <--- THIS IS THE ERROR
}
我相信错误也可能是由这段代码引起的,我在其中调用了“拼写”函数,但我不确定:
// CALL ADD WORD FUNCTION
spell(wordLength, remove, wordLength);
我还附上了下面的整个代码块。任何意见是极大的赞赏。干杯!
const words = [
'creator.'
];
// START TYPEWRITER ON LOAD
window.addEventListener('load', typewriter);
function typewriter() {
// LOOP FOR EACH WORD IN ARRAY
for (let i = 0; i < words.length; i++) {
const word = words[i];
const wordLength = word.length;
const letterArray = [];
const wordBox = document.querySelector('#text');
var timeArray = [500, 600, 700, 800];
var randTime = timeArray[Math.floor(Math.random() * timeArray.length)];
var deleteDelay = 300;
var iterationDelay = 1000;
// CREATE LETTER ARRAY
for (let i = 0; i < wordLength; i++) {
letterArray.push(word.charAt(i));
}
// SPELL OUT WORD FUNCTION
function spell(x, callback, length) {
setTimeout(() => {
wordBox.innerHTML += letterArray[wordLength - x];
if (--x) spell(x);
}, randTime);
callback(length);
}
// DELETE LETTERS FROM WORD FUNCTION
function remove(y) {
setTimeout(() => {
const string = wordBox.textContent;
const newString = string.substring(0, string.length - 1);
wordBox.textContent = newString;
if (--y) remove(y);
}, deleteDelay);
}
// CALL ADD WORD FUNCTION
spell(wordLength, remove, wordLength);
}
}
解决方案
推荐阅读
- docker - ArangoDB 未知选项 --rocksdb.encryption-keyfile
- swift - UIImageView 的角半径不适用于具有动态大小的 UICollectionViewCell
- python - 仅在 WSL 上的脚本中的第二个 raw_input 的 Python EOFError
- javascript - JavaScript 错误行为
- angular - 在 Angular 7 中使用 getElementById 对 DOM 元素应用指令
- azure-devops - 是否可以在两个组织之间移动项目集合?
- ruby-on-rails - 添加按钮的引导程序
- python-3.x - 如何删除一个非常大的文本文件中的每一行?
- javascript - gulp live-reload/live-reload chrome 插件不起作用 OS X el capitan 版本 10.11.6
- html - 为什么属性 align="center" 在我的 html5 文件中起作用?