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