Javascript 函数不改变变量的值

Javascript 函数不改变变量的值,javascript,Javascript,我正在处理一个HTML页面,希望首先执行函数typewriter,然后启动一个打印“.”的循环,使其看起来像一个加载屏幕 这是我正在使用的代码: var y=0 var i=0; var txt=“//欢迎来到我的游乐场!”; 无功转速=100; 功能打字机(){ 如果(i

我正在处理一个HTML页面,希望首先执行函数typewriter,然后启动一个打印“.”的循环,使其看起来像一个加载屏幕

这是我正在使用的代码:

var y=0
var i=0;
var txt=“//欢迎来到我的游乐场!”;
无功转速=100;
功能打字机(){
如果(i

嗨,
我是沙拉杰 原型设计=[“Arduino”,“树莓皮”]
语言=[“HTML”、“CSS”、“PYTHON”、“C++”]
也许您可以创建另一个函数,在设置y的地方调用:

var i=0;
var txt=“//欢迎来到我的游乐场!”;
无功转速=100;
功能打字机(){
如果(i

嗨,
我是沙拉杰 原型设计=[“Arduino”,“树莓皮”]
语言=[“HTML”、“CSS”、“PYTHON”、“C++”]
如果更改,您可以看到发生了什么

while(statement) {
  //code
}

do…while
循环只执行一次。这是因为它在执行时只运行了一次,
y==0
while
按您的方式循环,它根本不会触发,因为它的语句被解释一次,
y==0

如果您想在每次调用
typeWriter()
时调用它,那么该函数已经有了一个递归循环,所以只需将
while
代码放在它自己的函数中,并从内部调用它即可

var y=0
var i=0;
var txt=“//欢迎来到我的游乐场!”;
无功转速=100;
功能打字机(){
如果(i

嘿,试试这个,不需要循环 如果使用无限的while循环,它将崩溃。 因此,只要使用
setInterval
并在加载完成后清除间隔,即可使用
clearInterval()清除间隔

var y=0
var i=0;
var txt=“//欢迎来到我的游乐场!”;
无功转速=100;
功能打字机(){
如果(i

嗨,
我是沙拉杰 原型设计=[“Arduino”,“树莓皮”]
语言=[“HTML”、“CSS”、“PYTHON”、“C++”]
试试这个

  var i = 0;
  var txt = "//Welcome To My Playground!";
  var speed = 100;
  var loading;

  function typeWriter() {
    if (i < txt.length) {
      document.getElementById("typing").innerHTML += txt.charAt(i);
      i++;
      setTimeout(typeWriter, speed);
    } else {
        var span = document.getElementById("myspan");
        var loading = setInterval(function () {
            span.innerHTML = span.innerHTML.length == 11 ? "" : span.innerHTML;
            span.innerHTML += ".";
        }, speed);
        // clearInterval(loading); // to stop loading dots
    }
  }
var i=0;
var txt=“//欢迎来到我的游乐场!”;
无功转速=100;
无功负荷;
功能打字机(){
如果(i
while
loop和
setInterval
的组合一开始似乎不是一件好事。如果当你点击这个
while
循环时(幸运的是,这在这个代码中不会发生),你将触发无限多个间隔的创建,不改变
y的值
。即时浏览器崩溃。你能告诉我一个替代方法来实现这一点而不使浏览器崩溃吗?while循环没有被执行,因为它从未被调用。您让打字机函数在加载时执行,因此它将执行该函数,而不会执行其他任何操作……您是对的,只是在程序的一开始调用了一次while循环。我希望myspan只在文本打印完成后启动,在这段代码中,它们都一起启动。@Bedir位置无关紧要。当第一次执行代码时,不管发生什么情况,都会解释while循环条件
y
在这一点上等于0,因此循环中的代码根本不会执行。@ShalajWadhwa您可以将typeellipes函数放在else的情况下,这样它只在其他文本之后运行。我希望myspan只在文本打印完成后启动,在这段代码中,它们一起启动。
  var i = 0;
  var txt = "//Welcome To My Playground!";
  var speed = 100;
  var loading;

  function typeWriter() {
    if (i < txt.length) {
      document.getElementById("typing").innerHTML += txt.charAt(i);
      i++;
      setTimeout(typeWriter, speed);
    } else {
        var span = document.getElementById("myspan");
        var loading = setInterval(function () {
            span.innerHTML = span.innerHTML.length == 11 ? "" : span.innerHTML;
            span.innerHTML += ".";
        }, speed);
        // clearInterval(loading); // to stop loading dots
    }
  }