Javascript循环。我究竟做错了什么?

时间:2015-06-11 03:27:41

标签: javascript loops for-loop

尝试制作一个输出2到0-31的幂的循环。到目前为止,我只有它给了我31的力量。我做错了什么?

function findPower()
{
    var answer=0;

    for(var i=0;i<=31;i++)
    {
        answer=Math.pow(2,i);
    }

    document.getElementById("output").innerHTML=answer;
}

4 个答案:

答案 0 :(得分:2)

因为在每次迭代的循环中,你都会覆盖answer的值,所以最后它只有最后一次迭代的值。

如果你想迭代每个数字的值,那么一个简单的解决方案是将它们推送到一个数组,并在循环之后加入它们以创建如下的答案字符串

var list = SomeFunction<FaceBook>();

&#13;
&#13;
function findPower() {
    var answer = [];

    for (var i = 0; i <= 31; i++) {
        answer.push(Math.pow(2, i));
    }

    document.getElementById("output").innerHTML = answer.join(', ');
}
&#13;
function findPower() {
  var answer = [];

  for (var i = 0; i <= 31; i++) {
    answer.push(Math.pow(2, i));
  }

  document.getElementById("output").innerHTML = answer.join(', ');
}

findPower();
&#13;
&#13;
&#13;

答案 1 :(得分:1)

你在循环中声明&#34; document.getElementById(&#34;输出&#34;)。innerHTML = answer;&#34;覆盖以前的值,因此您获得最后一个值。所以我所做的就是结合值而不是覆盖以前的值

它应该跟随

&#13;
&#13;
   function findPower() {
     var answer = 0;

     for (var i = 0; i <= 31; i++) {
       answer = Math.pow(2, i);
       document.getElementById("output").innerHTML = document.getElementById("output").innerHTML + "," + answer
     }


   }
&#13;
<body onload="return findPower();">
</body>
<span id="output"></span>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

如果我说得对,你想要计算2的幂的总和:

for (var i = 0; i <= 31; i++) {
    answer += Math.pow(2, i);
}

注意“+”号。写作:

answer += Math.pow(2, i);

与写作相同:

answer = answer + Math.pow(2, i);

答案 3 :(得分:0)

也许它更好更快。

function findPower() {
  var answer = [];
  var pow = 1;
  answer.push(pow);
  for (var i = 1; i <= 31; i++) {
    pow *= 2;
    answer.push(pow);
  }
  document.getElementById("output").innerHTML = answer.join(', ');
}