Я пытаюсь создать эффект «пишущей машинки» в javascript, который создает видимость «написания», а затем «удаления» слов из массива.У меня есть функция «spell», которая записывает каждое слово, и я хотел бы добавить функцию обратного вызова для функции «delete», чтобы после завершения ввода слова оно начинало удалять.
Однако,Я продолжаю получать следующую ошибку, когда я пытаюсь прикрепить обратный вызов:
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
}
Я полагаю, что ошибка также может быть связана с этим кодом, где я вызываю функцию 'spell', но я не уверен:
// 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);
}
}