【问题标题】:Understanding basic javascript logic了解基本的 javascript 逻辑
【发布时间】:2017-03-05 05:24:40
【问题描述】:

我目前正在学习/练习 DOM 操作并浏览了本教程/练习表。

https://github.com/lmuntaner/dom_manipulation

我目前对 createGrid 函数创建的循环感到困惑。 ... 函数“createGrid”被创建并接受一个参数。该函数创建了一个 for 循环,其中嵌套了另一个循环...与第一个循环具有相同的语句...为什么要创建一个单独的循环?为什么不只有一个 for 循环?有人可以解释一下吗? (写这段代码的人远超我,但我还是想明白为什么)

    $(function () {
  var rows = 10;
  var cols = 10;
  var cells = [];
  function createGrid(root) {
    for(var i = 0; i < cols; i++) {
      for(var j = 0; j < cols; j++) {
        var cell = $('<div>').addClass('cell');
        cells.push(cell);
        root.append(cell);
      }
    }
  };

  var updateState = function() {
    cells.forEach(function (cell) {
      var randomNum = Math.random() * 2;
      if (randomNum > 1) {
        cell.addClass('active');
      } else {
        cell.removeClass('active');
      }
    });
  }

  setInterval(updateState, 500);

  var $root = $('.container');
  createGrid($root);
});

【问题讨论】:

  • 那么你是在问为什么网格没有用一个 for 循环完成?

标签: javascript jquery logic


【解决方案1】:

嗯,实际上我很确定这是开发人员的错误。如你所想,那没有意义。 只需像这样更改父亲循环:

function createGrid(root) {
    for(var i = 0; i < rows; i++) {
        for(var j = 0; j < cols; j++) {
            var cell = $('<div>').addClass('cell');
            cells.push(cell);
            root.append(cell);
        }
    }
}

因为创建表或网格的常用方法是使用父循环创建行,使用嵌套循环创建列。 他只是没有意识到自己的错误。

【讨论】:

  • 叮叮叮——这就是答案。如果您查看您发布的代码,原始开发人员会创建一个名为rows 的变量,他/她从不使用。当然,他们只是不小心在嵌套循环中使用了两次cols,而他们本来打算使用一次rows
猜你喜欢
  • 1970-01-01
  • 2013-11-15
  • 1970-01-01
  • 1970-01-01
  • 2017-01-01
  • 2019-10-18
  • 1970-01-01
  • 2011-05-31
  • 1970-01-01
相关资源
最近更新 更多