jQuery(element)一次选择一个元素还是一次选择所有元素?

时间:2018-06-30 21:30:14

标签: javascript jquery html dom

我的任务是获取段落中的所有单词,并使每个单词每秒切换一次为随机颜色。

我写了这篇文章,以为exited with 126: , message: "rpc error: code = 2 desc = oci runtime error: exec failed: container_linux.go:247: starting container process caused \"process_linux.go:83: executing setns process caused \\\"exit status 15\\\"\"\n\r\n" 会找到所有span元素并对所有元素一次执行相同的操作,这会使所有单词切换为SAME随机颜色。

但是,此代码将每个单词切换为不同随机颜色,就像在每个$('span')上运行makeHexColor的不同实例一样。正如我所想的那样,我非常困惑,发生的事情是在spansetInterval内部首先求值为随机字符串,然后将一个特定的字符串附加到所有范围的color属性上

makeHexColor
$(document).ready(function() {
  var words = $('p').text().split(' ');
  
  $('p').empty();  
  words.forEach(function(word) {
    $('p').append($('<span>').text(word + ' '));
  });

  setInterval(function() {
    $('span').css('color', makeHexColor);
  }, 1000);
})

var makeHexColor = function() {
  var hex = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'];
  var color = '#';
  
  for (var i = 0; i < 6; i++) {
    var random = Math.floor(Math.random() * 16);
    color += hex[random];
  }
  
  return color;
}

2 个答案:

答案 0 :(得分:2)

$('span').css ...实际上是由jQuery编译为循环的,并且每次迭代都在调用makeHexColor函数。

如果您希望所有颜色相同的单词将您的setInterval更新为:

setInterval(function() { 
    var color = makeHexColor();
    $('span').css('color', color) 
},1000)

答案 1 :(得分:0)

这里是一个小提琴琴,可以满足您的要求。

https://jsfiddle.net/dka1qojh/

本质上,只需创建一个hexValue变量即可按间隔更新并保留原始代码。我希望这会有所帮助。