循环以打印以逗号分隔的迭代,最后没有逗号

时间:2013-08-09 04:24:18

标签: javascript

我是一名学生,正在编写一个JavaScript“for”循环,打印到innerHTML中。字符串的每个串联都添加到最后一个逗号。如何使它在最后一次迭代后不打印逗号?只是为了一点心思,逗号不是作业的一部分,我只是想添加实际的应用程序。请不要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 个答案:

答案 0 :(得分:6)

您应该使用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;

答案 1 :(得分: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);
}

答案 2 :(得分: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函数,如此处的其他答案所示。

答案 3 :(得分: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;
};