2017-02-02 49 views
-2

我想,在第一小區E的閃爍紅色藍色紅色藍色... 然後傳感器h閃爍紅色藍色紅色......setInterval它是如何工作的?

但只有傳感器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> 
+1

[篩選](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setInterval) – Teemu

+0

我的意思是細胞blinker0和blinker1代替細胞E和單元格H – Joachim

+0

請張貼您的HTML嗎? – Pugazh

回答

0

下面是一個例子更新運行。

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); 
 
    } 
 

 
}
<div id="blinker0">Cell 1</div> 
 
<div id="blinker1">Cell 2</div>

+0

謝謝。它的工作原理是我想要的。你能告訴我爲什麼你在doBlink函數中調用函數doBlink?i – Joachim

+0

@Joachim - 只有這時,閃爍纔會轉移到下一個單元格。 – Pugazh

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]); 
     } 
    } 
} 
+1

如果您有新問題,請點擊[問問題](/問題/問題)按鈕。如果有助於提供上下文,請包含此問題的鏈接。 - [來自評論](/ review/low-quality-posts/18595978) – iBug