我试图理解为什么等于10的变量txt在返回时不会应用于语句?如果我将变量设置为10不应该在循环返回时应用于输出?
这是我的代码:
function myFunction() {
var myNumber = 2;
var txt = 10;
while (myNumber != Infinity) {
myNumber = myNumber * myNumber;
txt = txt + myNumber + "<br>";
}
document.getElementById("demo").innerHTML = txt;
}
&#13;
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
&#13;
答案 0 :(得分:0)
您的var txt = 10
不在while循环中,因此在每个循环后都不会重置。我假设你的问题意味着你希望每次运行while循环时都有txt = 10
,而只有myNumber
递增。如果是这种情况,您可以按如下方式简化代码:
function myFunction() {
var myNumber = 2;
while (myNumber != Infinity) {
myNumber = myNumber * myNumber;
var txt = 10 + myNumber + "<br>";
}
document.getElementById("demo").innerHTML = txt;
}
答案 1 :(得分:0)
我认为问题是你要添加到txt的中断。如果我理解正确,这应该可以解决您的问题。
http://localhost/xampp/
答案 2 :(得分:0)
变量确实随着循环的每次迭代而改变。
让我们在每次迭代时都遵循这个值:
#1 iteration: txt == 10 + 4 + "<br>" == "14<br>"
#2 iteration: txt == "14<br>" + 16 + "<br>" == "14<br>16<br>"
#3 iteration: txt == "14<br>16<br>" + 256 == "14<br>16<br>256"
等等。此外,每次迭代都会完全更改<p>
的HTML代码,而不是添加append
。基本上变量txt会随着每次迭代而变化,并在<p>
答案 3 :(得分:0)
保存值10的var text
会重新分配第一次迭代中设置的字符串的值。
如果您注销了txt
,那么您将在每次迭代时看到:
// 1) 14
// Effectively '14<br>`
// A result of 10 + (2*2) + <br>
// 2) 14
// 16
// Effectively '14<br>16<br>`
// This is because txt was '14<br>`
// So '14<br>` + (4*4) + <br>
// 3) 14
// 16
// 256
// Effectively '14<br>16<br>256<br>`
// This is because txt was '14<br>16<br>`
// So '14<br>16<br>` + (16*16) + <br>
等等......