为什么我的函数不能使用参数? -解决了

时间:2019-07-16 02:54:19

标签: javascript function parameters

我正在尝试为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,因此查找实际错误很复杂

2 个答案:

答案 0 :(得分:0)

我假设您打算将函数签名更改为typewriter(txt, speed),这将解决我的评论中提出的问题。

第二个问题是您第二次调用该函数时未将任何参数传递给该函数。这意味着txtundefinedtxt.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)。