Javascript循环停止使用if条件

时间:2016-01-15 08:12:33

标签: javascript jquery if-statement

$("div").each(function(i, obj) {
  i++;
  var stopLoop = false; 
  if (!$(obj).attr('style') && stopLoop !== true) {
    $(obj).attr('style', 'background:'+getRandomColor()+';');
    return false;
  }
});

以上方法工作,只要函数被触发,它就会为我的div添加一种新颜色。但由于返回false被使用,我之后的代码将无法运行。所以我尝试使用if条件而不是返回false,它不起作用。

// doesn't work

    $("div").each(function(i, obj) {
      i++;
      var stopLoop = false; 
      if (!$(obj).attr('style') && stopLoop !== true) {
        $(obj).attr('style', 'background:'+getRandomColor()+';');
        stopLoop = true;
      }
    });

3 个答案:

答案 0 :(得分:0)

尝试休息:

$("div").each(function(i, obj) {
    i++;
    if (!$(obj).attr('style')) {
        $(obj).attr('style', 'background:'+getRandomColor()+';');
        break;
    }
});

答案 1 :(得分:0)

使用下面的解决方案

var stopLoop = false;

$("div").each(function(i, obj) {
  if(i === 0) {
    stopLoop = false;
  }

  i++;

  if (!$(obj).attr('style') && !stopLoop) {
    $(obj).attr('style', 'background:'+getRandomColor()+';');
    stopLoop = true;
  }
});

答案 2 :(得分:0)

在全局范围内声明stopLoop变量。 在你的情况下,stopLoop在函数内是deaclared,在函数结束后它的工作变量将被删除。在另一次迭代中,它将再次声明为值false