javascript - for循环跳过间隔javascript

标签 javascript loops for-loop

美好的一天! 我正在尝试制作一个 for 循环,但问题是它会跳过所有其他数字。我完全不知道是什么原因造成的。它不会给出 1、2、3 等等,而是给我 1、3、4 等等。我怎样才能阻止它跳过一个间隔?这是视觉结果(http://imgur.com/M3MBYox)

var cols = document.getElementsByClassName("col");   
var seatNum = 0;

for (var i = cols.length -1; i >= 0; i--) {
  if (i % 2 === 0) {
    for (var j = 0; j < cols[i].childNodes.length; j++) {
      cols[i].childNodes[j].innerHTML = seatNum;
      seatNum++;
    }
  } else {
    for (var j = cols[i].childNodes.length - 1; j >= 0; j--) {
      cols[i].childNodes[j].innerHTML = seatNum;
      seatNum++;
    }
  }
}

Codepen 片段:http://codepen.io/anon/pen/KVbGKJ

最佳答案

问题是您正在修改 childNodes 而不是 cols[i]children。它们不是同一件事。检查下图。节点和元素( child )是不同的东西。 childNodeschildren 的长度不同。这导致了问题。

enter image description here

使用 children 而不是 childNodes 它将起作用。但是还有另一个问题。编号将从 0 开始。要解决这个问题,只需从 1 开始 seatNum

var cols = document.getElementsByClassName("col");
var seatNum = 1;

for (var i = cols.length - 1; i >= 0; i--) {
  if (i % 2 == 0) {
    for (var j = 0; j < cols[i].children.length; j++) {
      cols[i].children[j].innerHTML = seatNum;
      seatNum++;
    }
  } else {
    for (var j = cols[i].children.length - 1; j >= 0; j--) {
      cols[i].children[j].innerHTML = seatNum;
      seatNum++;
    }
  }
}

var cols = document.getElementsByClassName("col");
var seatNum = 1;

for (var i = cols.length - 1; i >= 0; i--) {
  if (i % 2 == 0) {
    for (var j = 0; j < cols[i].children.length; j++) {
      cols[i].children[j].innerHTML = seatNum;
      seatNum++;
    }
  } else {
    for (var j = cols[i].children.length - 1; j >= 0; j--) {
      cols[i].children[j].innerHTML = seatNum;
      seatNum++;
    }
  }
}
.col,
.column {
  float: left;
}

.col div,
.column div {
  float: left;
  clear: left;
  width: 20px;
  height: 20px;
  margin: 2px;
  border: 1px solid black;
}

hr {
  clear: left;
}
<div class="col">
  <div></div>
  <div></div>
  <div></div>
</div>
<div class="col">
  <div></div>
  <div></div>
  <div></div>
</div>
<div class="col">
  <div></div>
  <div></div>
  <div></div>
</div>

<hr> Should look like this
<div class="column">
  <div>7</div>
  <div>8</div>
  <div>9</div>
</div>
<div class="column">
  <div>6</div>
  <div>5</div>
  <div>4</div>
</div>
<div class="column">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

JSFiddle


更新:JSFiddle (your original column structure)

关于javascript - for循环跳过间隔javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35555099/

相关文章:

javascript - Jquery Waypoints 基本脚本不起作用

java - ArrayList循环只输出最后一项

mysql - 在 MYSQL 中使用存储过程计算成本

node.js - 带有嵌套 promise 的循环

c - 优化嵌套循环的 C 代码

javascript - 如何在 javascript 或 jquery 中使用对象

javascript - 将用户上传的图像保存到文件夹和/或服务器

android - 使用 setNextMediaPlayer 的音频播放问题

使用for循环的Javascript图像幻灯片

javascript - 将用户重定向到设备恢复上的某个 URL