javascript count当前我的值与先前的循环输出值

时间:2019-03-01 22:48:26

标签: javascript html for-loop

function myFunction() {
  var text = "";
  var i;
  for (i = 0; i <= 10; i++) {
    text += + i + "<br>";
  }
  document.getElementById("demo").innerHTML = text;
}
<button onclick="myFunction()">Count</button>

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

我想将当前的i值添加到先前的循环输出值中。这也许是一个简单的问题。我已经在谷歌和stackoverflow搜索。但是,没有得到理想的结果。

enter image description here

在上面的屏幕截图中,

0是上一个循环值+ 1存在,我返回=> 1
1是上一个循环值+ 2存在,我返回=> 3
3是上一个循环值+ 3存在,我返回=> 6
6是前一个循环值+ 4存在,我返回=> 10

5 个答案:

答案 0 :(得分:4)

您需要另一个持久变量,用于跟踪与+串联的最后一个总数:

text
function myFunction() {
  var text = "";
  var i;
  var lastTotal = 0;
  for (i = 0; i <= 10; i++) {
    var newTotal = lastTotal + i;
    text += + newTotal + "<br>";
    lastTotal = newTotal;
  }
  document.getElementById("demo").innerHTML = text;
}

(从技术上讲,您不需要<button onclick="myFunction()">Count</button> <p id="demo"></p>变量,但是它使代码的意图更加清晰)

您还可以使用newTotal来做到这一点:

reduce
function myFunction() {
  let text = '';
  Array.from({ length: 11 }, (_, i) => i)
    .reduce((lastTotal, i) => {
      const newTotal = lastTotal + i;
      text += newTotal + '<br>';
      return newTotal;
    }, 0);
  document.getElementById("demo").innerHTML = text;
}

答案 1 :(得分:1)

您只需要第二个变量来保存最后一个值:

function myFunction() {
  var text = "";
  var sum = 0;
  for (var i = 0; i <= 10; i++) {
    sum += i;
    text += sum + "<br>";
  }
  document.getElementById("demo").innerHTML = text;
}
<button onclick="myFunction()">Count</button>

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

答案 2 :(得分:1)

保留最后一个数字的count

function myFunction() {
  var text = "";
  var i;
  var count = 0;
  for (i = 0; i <= 10; i++) {
    count += i;
    text += count + "<br>";
  }
  document.getElementById("demo").innerHTML = text;
}
<button onclick="myFunction()">Count</button>

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

答案 3 :(得分:1)

您可以使用函数<cfdump var="#form#" format="html" output="/full/path/to/file"> 来填充操作,然后使用函数reduce来构建所需的输出。

forEach
function myFunction() {
  var html = "";
  Array.from({length: 10}, (_, i) => i + 1).reduce((a, c, i) => {
    a[i] = (a[i - 1] || 0) + c;
    return a;
  }, []).forEach((n, i, arr) => 
    (html += (arr[i - 1] || 0) + " + " + (i + 1) + " = " + n + "<br>"));

  document.getElementById("demo").innerHTML = html;
}

答案 4 :(得分:1)

我想我只是使用一个数组,以便你们俩都有前一个总数,并且还可以将其与.join()一起使用来设置HTML。

function myFunction() {
  for (var i = 0, a = []; i <= 10; i++) {
    a[i] = i + (a[i-1] || 0);
  }
  
  document.getElementById("demo").innerHTML = a.join("<br>");
}
<button onclick="myFunction()">Count</button>

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