1

嗨,前几天我在玩数学随机并制作了一个 RGB 颜色生成器,并成功地能够使用文本输入来限制随机数的屋顶,但无法让地板工作。这是 JSFiddle http://jsfiddle.net/synthet1c/3KR83/

这是我制作的Javascript函数

function randomColor(){

    var roof =  document.getElementById('textRoof').value,
        floor = document.getElementById('textFloor').value;

    var r = Math.floor((Math.random()*roof)+floor);
    var g = Math.floor((Math.random()*roof)+floor);
    var b = Math.floor((Math.random()*roof)+floor);


    if (r < 10) { var r = "0" + r}
    if (r < 100) { var r = "0" + r};

    if (g < 10) { var g = "0" + g};
    if (g < 100) { var g = "0" + g};

    if (b < 10) { var b = "0" + b};
    if (b < 100) { var b = "0" + b};

    document.getElementById('header').style.color= "rgb("+r+","+g+","+b+")"
    document.getElementById('text').value = "rgb("+r+","+g+","+b+")"

}

这只是为了学习它,但任何帮助表示赞赏。

干杯

4

2 回答 2

1
var roof =  document.getElementById('textRoof').value,
  floor = document.getElementById('textFloor').value;

// convert the string values to integer values
roof = parseInt(roof);
floor = parseInt(floor);

var r = Math.floor((Math.random()*(roof-floor))+floor);
var g = Math.floor((Math.random()*(roof-floor))+floor);
var b = Math.floor((Math.random()*(roof-floor))+floor);

活生生的例子

于 2012-11-07T05:21:43.267 回答
1
  1. 你的发言是一个文本。你需要一个整数 - parseInt。
  2. 您可以通过使用位移来简化颜色获取。

    function randomColor(){
    
    var roof =  parseInt(document.getElementById('textRoof').value),
        floor = parseInt(document.getElementById('textFloor').value);
    
    var r = floor + Math.floor(Math.random()*(roof-floor));
    var g = floor + Math.floor(Math.random()*(roof-floor));
    var b = floor + Math.floor(Math.random()*(roof-floor));
    
    var color = ((r << 16) + (g << 8) + b).toString(16);
    
    document.getElementById('header').style.color= 
        "#000000".replace(new RegExp(".{"+color.length+"}$"), color);
    
    document.getElementById('text').value = "rgb("+r+","+g+","+b+")"
    
    }
    
于 2012-11-07T05:32:41.567 回答