1

クリックするたびに Web ページの背景を変更する単純なプロジェクトに取り組んでいました。私はそのようなことに成功し、数回テストし、保存し、再度テストしてから去りました。

私は家に帰ってそれをロードします..そして、それはもはや機能しません。私は同じブラウザを使用しています。何かがどのように変更されたのかわかりません..私はいくつかの方法を台無しにしたに違いありません..

誰かが私の単純なプログラムを見て、何が間違っているのか教えてもらえますか? (繰り返しますが、プログラムの目的は、ページをクリックするたびに Web ページの背景色をランダムな色に変更することです。)

コードは次のとおりです。

<!DOCTYPE HTML PUBLIC>
<html>

<head>
    <title>Random Colors</title>
<script language="javascript">
    function randomColor() {
        var h0 = Math.floor(Math.random()*99);
        var h1 = Math.floor(Math.random()*99);
        var h2 = Math.floor(Math.random()*99);
        var h3 = Math.floor(Math.random()*99);
        var h4 = Math.floor(Math.random()*99);
        var h5 = Math.floor(Math.random()*99);
    return '#'.toString(16)+h0.toString(16)+h1.toString(16)+h2.toString(16);+h3.toString(16)+h4.toString(16)+h5.toString(16);
    }
</script>
</head>

<body onclick="document.bgColor=randomColor();">
</body>
</html>

誰かが助けてくれるなら、前もって感謝します。

4

6 に答える 6

3

'#'.toString(16)意味がないので、文字列を'#'16進数形式の文字列に変換することはできません...

の後に余分なセミコロンがありh2.toString(16)ます。

return '#'+h0.toString(16)+h1.toString(16)+h2.toString(16)+h3.toString(16)+h4.toString(16)+h5.toString(16);

各桁を0〜98ではなく0〜15の範囲に保ちたいと思います:

var h0 = Math.floor(Math.random()*16);
于 2013-10-11T00:41:09.627 に答える
1

これを試してみてください。@Guffaが行ったことから構築

function randomColor() {
    var h0 = Math.floor(Math.random()*16);
    var h1 = Math.floor(Math.random()*16);
    var h2 = Math.floor(Math.random()*16);
    var h3 = Math.floor(Math.random()*16);
    var h4 = Math.floor(Math.random()*16);
    var h5 = Math.floor(Math.random()*16);
    return '#' + h0.toString(16) + h1.toString(16) + h2.toString(16) + h3.toString(16) + h4.toString(16) + h5.toString(16);
}

これがフィドルです-> http://jsfiddle.net/Jh5ms/1/

于 2013-10-11T00:55:29.433 に答える
0

Guffa が指摘したように、最初のエラーは「#」を 16 進数表現に変換しようとしたことです。

これでうまくいくはずです:

function randomColor() {
    var ret = Math.floor(Math.random() * (0xFFFFFF + 1)).toString(16);
    return ('#' + new Array((6 - ret.length) + 1).join('0') + ret);
}

window.onload = function() {
    document.querySelector('button').onclick = function() {
        document.querySelector('body').style.backgroundColor = randomColor();
    };
};

これがデモンストレーションです。

現在のページに実装する方法を示す別のデモを次に示します。また、イベント ハンドラーを目立たないように自由に変更しました。

于 2013-10-11T01:05:30.903 に答える
0

問題を修正するグッファに追加すると、Math.random()*99これらすべてを次のようなループに入れます。

var theColor = "#";

for (var i = 0; i < 6; i++) {
    theColor += Math.floor(Math.random() * 16).toString(16);
}

return theColor;

ここにjsFiddleがあります

于 2013-10-11T00:51:30.900 に答える
-2

あなたのフォーマットの別の答え - これを背景色を変更したいものに渡します http://jsfiddle.net/FpLKW/2/

<div onclick="test(this);">

        </div>

          function test (ele) {
                var h0 = Math.floor(Math.random()*10);
                var h1 = Math.floor(Math.random()*10);
                var h2 = Math.floor(Math.random()*10);
                var h3 = Math.floor(Math.random()*10);
                var h4 = Math.floor(Math.random()*10);
                var h5 = Math.floor(Math.random()*10);

            var x =  '#' + h0.toString(16) + h1.toString(16) + h2.toString(16) + h3.toString(16) + h4.toString(16) + h5.toString(16);
            ele.style.backgroundColor=x;
         }
于 2013-10-11T01:21:49.993 に答える