为什么输出不应用第二个变量

时间:2017-03-25 19:07:20

标签: javascript html function while-loop conditional

我试图理解为什么等于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;
&#13;
&#13;

4 个答案:

答案 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>

等等......