所有生成的随机值都相同

Sal*_*aif 2 javascript arrays random

这是我写的代码,我不知道为什么所有50 rgbColor都生成相同的值,即使我在randomRGBValue中编写随机函数.

var html = '';
var valueArr = [];
var rgbColor;

function randomValue() {
  for (var i = 0; i < 3; i += 1) {
    valueArr.push(Math.floor(Math.random() * 256 ));
  }
  return valueArr;
}

function randomRGB() {
  randomValue();
  var color;
  color = 'rgb(';
  color += valueArr[0] + ',';
  color += valueArr[1] + ',';
  color += valueArr[2] + ')';
  return color;
}

for (var i = 0; i < 50; i += 1) {
  rgbColor = randomRGB();
  html += '<div style="background-color:' + rgbColor + '"></div>';
}

document.write(html);
Run Code Online (Sandbox Code Playgroud)

为了便于理解我糟糕的书面代码,

- > randomValue函数用于生成1到255(3组)的随机值,并被推入valueArr.valueArr被返回.

示例valueArr =(value1,value2,value3)

- > randomRGB函数调用randomValue函数并将valueArr值插入颜色数组.

小智 6

你的问题是你永远不会重置你的valueArr- 你不断变得越来越大.但是在您的randomRGB()函数中,您始终可以访问数组的前三个元素.

你可以通过添加var valueArr = []你的randomValue()函数内部来解决这个问题,你应该没问题.