1

こんにちは私は先日、ランダムな数学で遊んでいて、RGBカラージェネレーターを作成し、テキスト入力を使用して乱数の屋根を制限することに成功しましたが、床を機能させることができませんでした。これがJSFiddlehttp : //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
  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 に答える
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 に答える