为了账号安全,请及时绑定邮箱和手机立即绑定

来个大佬解释下

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>W3Cschool教程(w3cschool.cn)</title>

</head>

<body>


<p>点击按钮循环代码5次。</p>

<button onclick="myFunction()">点击这里</button>

<p id="demo"></p>

<script>

function myFunction(){

    var x="";

    for (var i=0;i<5;i++){

        x=x+"该数字为 " + i + "<br>";

    }

    document.getElementById("demo").innerHTML=x;

}

</script>

</body>

</html>


//里面的 x=x+"该数字为 " + i + "<br>";  为什么要在前面加个 x+


正在回答

4 回答

如果不加x+的话,每次循环时x的值都是”该数字为 i“,循环完后,x的值只是”该数字为 4+换行“;加了x+的话,第一次循环时x的值是”该数字为 1+换行“,第二次循环时x的值是”该数字为 1+换行 该数字为 2+换行“,最后循环完后就是你要的格式了。

0 回复 有任何疑惑可以回复我~

因为这段代码里是把所有需要显示的文本放在x这一个变量里的,代码里for循环:

for (var i=0;i<5;i++){
    x=x+"该数字为 " + i + "<br>";
}

是循环给x变量追加文本,直到循环结束后再通过innerHTML直接把值给到id为demo的p元素来显示:

document.getElementById("demo").innerHTML=x;

如果你想把x+去掉也可以,只是文本输出的方式和位置也要换一下,要换在for循环里,每个循环输出一次,如将函数myFunction里内容替换为:

var x="";
for (var i=0;i<5;i++){
   x="该数字为 " + i + "<br>";
   document.write(x);
}

这样就可以就可以达到同样的效果,只是document.write会把函数调用前的页面全部覆盖掉,所以还是原来那种方式比较好。

1 回复 有任何疑惑可以回复我~
#1

keydew

第二种方法document.write(x);可以换成document.getElementById("demo").innerHTML+=x; 这样就不会覆盖原来的页面
2019-04-01 回复 有任何疑惑可以回复我~

想实现第一个 但是为什么要在i前面加个x+  我删了之后为什么直接就变成该数字为4呢

0 回复 有任何疑惑可以回复我~
#1

阿穆哥哥

你这个代码是先进行循环结束后再进行赋值的,当然当x=4的时候结束了,跳出循环之后,那个.innerHTML被赋值为4了,你想实现第一个效果可以把那个赋值语句放进循环
2019-03-29 回复 有任何疑惑可以回复我~

你这个是想实现:该数字为 0

该数字为 1

该数字为 2

该数字为 3

该数字为 4

还是想实现:该数字为0

该数字为 0该数字为 1

该数字为 0该数字为 1该数字为 2    这样的效果?

0 回复 有任何疑惑可以回复我~
#1

懒得起名字_3 提问者

想实现第一个 但是为什么要在i前面加个x+ 我删了之后为什么直接就变成该数字为4呢
2019-03-29 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

来个大佬解释下

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信