我正在尝试为Web项目制作打字机效果,我尝试制作自己的带有参数的作品,但由于某种原因它没有起作用。我发现其他人的打字机并试图对其进行编辑以更好地理解它,但是它不能与参数一起使用。原始代码使用了功能之外的变量,但效果很好,但变量失败了。我从w3schools.com获得了原始代码
我曾经尝试过以无关紧要的小方式编辑功能,但最终都以失败告终。
//The Working Function
var i = 0;
var txt = "Old McDonald Had a farm";
var speed = 50;
function typeWriter() {
if (i < txt.length) {
document.getElementById("demo").innerHTML += txt.charAt(i);
i++;
setTimeout(typeWriter, speed);
}
}
typeWriter();
// The edited function that failed
var i = 0;
var text = "Old McDonald Had a farm";
var spe = 50;
function typeWriter(txt, speed) {
if (i < txt.length) {
document.getElementById("demo").innerHTML += txt.charAt(i);
i++;
setTimeout(typeWriter, speed);
}
}
typeWriter(text, spe);
编辑后的代码只会输出第一个字符而不是停止符,我希望它能完成所有这些操作。我的网络文本编辑器不喜欢jQuery,因此查找实际错误很复杂
答案 0 :(得分:0)
我假设您打算将函数签名更改为typewriter(txt, speed)
,这将解决我的评论中提出的问题。
第二个问题是您第二次调用该函数时未将任何参数传递给该函数。这意味着txt
是undefined
且txt.length
会导致错误。
以下内容将使您可以使用setTimeout
将参数传递给函数:
function typeWriter(txt, speed) {
if (i < txt.length) {
document.getElementById("demo").innerHTML += txt.charAt(i);
i++;
setTimeout(function() { typeWriter(txt, speed); }, speed);
}
}
答案 1 :(得分:0)
第二个参数不正确,将函数typeWriter(txt,spe)更改为函数typeWriter(txt,speed)。