setInterval它是如何工作的?

时间:2017-02-02 09:42:36

标签: javascript html

我希望起初Cell E闪烁红蓝蓝红...... 然后Cell H闪烁红蓝红......

但只有Cell H眨眼。

有什么要改变的?

它似乎只运行i = selectCell = 2

<script>

var blinkColors=new    Array('red','blue','red','blue','red','blue','red','blue');

var selectCell = 2;
 for (var i = 0; i <=selectCell -1; i++)

 {
        var blinkColor=0;

        var myBlink=setInterval(function(){doBlink(j);},300);

          function doBlink(x)
            {
             var jj=x;
             var blinkCell=document.getElementById('blinker'+jj);
             blinkCell.style.backgroundColor=blinkColors[blinkColor];
             blinkColor++;

             if(blinkColor==blinkColors.length)
                 {
                  stopBlink();
                 }

            }

          function stopBlink()
                {
                 clearInterval(myBlink);
                }
    }

</script>
</head>

2 个答案:

答案 0 :(得分:0)

这是一个更新的例子。

&#13;
&#13;
var blinkColors = new Array('red', 'blue', 'red', 'blue', 'red', 'blue', 'red', 'blue');

var selectCell = 2;
var blinkColor = 0;
var iterator = 0;

var myBlink = setInterval(function() {
  doBlink();
}, 300);

function doBlink() {
  var blinkCell = document.getElementById('blinker' + iterator);
  blinkCell.style.backgroundColor = blinkColors[blinkColor];
  blinkColor++;

  if (blinkColor == blinkColors.length) {
    blinkColor = 0;
    blinkCell.style.backgroundColor = "transparent";
    iterator++;

    if (iterator == selectCell)
      clearInterval(myBlink);
    else
      doBlink(iterator);
  }

}
&#13;
<div id="blinker0">Cell 1</div>
<div id="blinker1">Cell 2</div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

我正在使用javascript数组创建动态表。 在数组中,zw是应该闪烁的单元格的索引。 我已经尝试了很多,但只有第一个细胞闪烁。 这是我的代码

var blinkColors = new Array('red', 'white','red', 'white','red', 'white' );
     var zw= new Array(1,4,5,9);
     var blinkColor = 0;
     var iterator = 0;

      var myBlink = setInterval(function() {
        doBlink();
      }, 300);

    function doBlink() {

       var blinkCell=document.getElementsByTagName('td');
       blinkCell[zw[iterator]].style.backgroundColor=blinkColors[blinkColor];

      if (blinkColor == blinkColors.length)

      {
        blinkColor = 0;
        blinkCell.style.backgroundColor = "transparent";
        iterator++;

        if (iterator == zw.lenght)
          clearInterval(myBlink);
        else
          doBlink(zw[iterator]);
       }
    }
 }