3

我是一名学生,正在编写一个打印到 innerHTML 的 JavaScript“for”循环。字符串的每个连接都添加到最后一个,后跟一个逗号。我如何使它在最后一次迭代后不打印逗号?只是为了记住,逗号不是作业的一部分,我只是想添加实际应用程序。请不要使用 jQuery

window.onload = function(){
  var mySeven = 0;
  var printSeven = document.getElementById('multiples_seven');

  for (i=1; i <= 1000; i++){
      if (i % 7 == 0){
      mySeven += i;
      printSeven.innerHTML += i + ',' + ' ';
      }
  }
};

谢谢!

4

4 回答 4

10

你应该join()改用。它更干净,您无需担心边缘情况:

  var printSeven = document.getElementById('multiples_seven');
  var sevens = [];
  for (i=1; i <= 1000; i++){
      if (i % 7 == 0){
        sevens.push(i);
      }
  }
  printSeven.innerText = sevens.join(", ");

或者一种避免if()语句和不必要的迭代的方法:

  var printSeven = document.getElementById('multiples_seven');
  var sevens = [];
  for (i = 7; i <= 1000; i += 7){
     sevens.push(i);
  }
  printSeven.innerText = sevens.join(", ");

为了便于理解,以下是您可以在没有以下情况下执行此操作的方法join()

  var printSeven = document.getElementById('multiples_seven');
  var maxValue = 1000;
  var list = "";

  for (i = 7; i <= maxValue; i += 7){
     list += i;
     if(i + 7 <= maxValue){
       list += ", ";
     }
  }
  printSeven.innerText = list;
于 2013-08-09T04:38:11.610 回答
1

使用这个功能:

 function reorderData(){
   var sevens = Array();
   var printSeven = document.getElementById('multiples_seven');
   for (i=1; i <= 1000; i++){
     if (i % 7 == 0){
       sevens.push(i);
    }
  }
  var newDisplaySelectedArray = sevens.join(",");
  jQuery( "#multiples_seven" ).val(newDisplaySelectedArray);
}
于 2013-08-09T04:55:40.580 回答
0

检查您是否在第一项比检查您是否在最后一项更容易,因此只需在数字前添加逗号:

window.onload = function(){
  var mySeven = 0;
  var printSeven = '';

  for (i = 1; i <= 1000; i++) {
    if (i % 7 == 0){
      mySeven += i;
      printSeven += (printSeven.length > 0 ? ', ' : '') + i;
    }
  }

  document.getElementById('multiples_seven') += printSeven;
};
于 2013-08-09T06:06:44.177 回答
0

首先,最好不要在循环中操作 DOM。您应该在字符串或数组中构造输出,然后通过一次操作将其添加到 DOM 中:

window.onload = function () {
  var mySeven = '';
  var printSeven = document.getElementById('multiples_seven');

  for (i=1; i <= 1000; i++){
      if (i % 7 == 0){
        mySeven += i + ', ';
      }
  }
  printSeven.innerHTML += mySeven;
};

要删除尾随逗号,您有两个选择:首先不要添加它,或者在将其添加到 DOM 之前将其删除。

大多数其他答案都集中在不添加它上,这是一个删除它的解决方案:

window.onload = function () {
  var mySeven = '';
  var printSeven = document.getElementById('multiples_seven');

  for (i=1; i <= 1000; i++){
      if (i % 7 == 0){
        mySeven += i + ', ';
      }
  }
  printSeven.innerHTML += mySeven.slice (0, -2);
};

请注意,如果您的 for 循环至少没有执行一次迭代,您可能会删除要显示的字符。在一般情况下,更容易构建数组并使用join此处其他答案中所示的函数。

于 2013-08-09T05:27:41.173 回答