“ i =(i + 1)%word.length”背后的逻辑是什么

时间:2019-11-30 17:26:51

标签: javascript html dom

我是编码新手。有人可以解释(“ i =(i + 1)%word.length”)

var text = document.querySelector('#text-wrap');

var word = text.getElementsByTagName('span');

var i = 0;

   function run(){

        word[i].style.display = 'none';

        i = (i + 1) % word.length

        word[i].style.display = 'initial';
  }

setInterval(run,800)  

2 个答案:

答案 0 :(得分:1)

在选择了最后一个单词后,它将i重置为0(以选择第一个单词)。

var text = document.querySelector('#text-wrap');

var word = text.getElementsByTagName('span');

var i = 0;

   function run(){
        // hide i-th word
        word[i].style.display = 'none';
                // set i to
        // if the last word is selected select the first word ( reset to 0 )
        i = (i + 1) % word.length
                // display i-th word
        word[i].style.display = 'initial';
  }

setInterval(run,800)  

我不建议这样做。 if语句更加清晰。该操作应相同:

var text = document.querySelector('#text-wrap');
var word = text.getElementsByTagName('span');

var i = 0;

function run(){
   word[i].style.display = 'none';

    if( i+1 !== word.length )
      i++;
    else // if i+1 === word.length
      i = 0;

   word[i].style.display = 'initial';
}

setInterval(run,800)  

仍然不要将i用作全局变量。至少使用一个在其他代码中不太可能存在的变量名代替。

快速模量说明

模量是无法迭代删除数量时剩余的数量。一些例子:

6 % 2 = 0 ( 6 - 2 - 2 - 2 = 0)

5 % 2 = 1 ( 5 - 2 -2 = 1 )

1 % 2 = 1 ( cannot substract 2 from 1 so the value is 1 )

简化示例

var word = [ '1', '2', '3'];
var i = 0;

function run(){
	console.log( word[i] );
    if( i+1 !== word.length )
      i++;
    else // if i+1 === word.length
      i = 0;
}

setInterval(run,1000);

答案 1 :(得分:1)

if (i < word.length - 1):

  i = i + 1; // increment

else if (i == word.length - 1):

  i = 0; // go back to 0

例如,如果 word.length 为5,而初始 i 为0,则

i 的输出顺序是1,2,3,4,0,1,2,3,4,0,....