2012-03-24 20 views
3

このWebページはバックグラウンドの色をランダムに変更します。私は "#title"で同じことをするのに問題がありますが、色は変わりません。JavaScriptで背景色をHTMLでランダムに変更するにはどうすればよいですか?

のJavaScriptコードをありがとう助けてください:

function setbackground() 
{ 
    window.setTimeout("setbackground()", 80); // milliseconds delay 

    var index = Math.round(Math.random() * 9); 

    var ColorValue = "FFFFFF"; // default color - white (index = 0) 

    if(index == 1) 
     ColorValue = "66FF33"; 
    if(index == 2) 
     ColorValue = "FF0000"; 
    if(index == 3) 
     ColorValue = "FF00FF"; 
    if(index == 4) 
     ColorValue = "0000FF"; 
    if(index == 5) 
     ColorValue = "00FFFF"; 
    if(index == 6) 
     ColorValue = "FFFF00"; 
    if(index == 7) 
     ColorValue = "CC66FF"; 
    if(index == 8) 
     ColorValue = "3366FF"; 
    if(index == 9) 
     ColorValue = "CCCCCC"; 

    document.getElementsByTagName("body")[0].style.backgroundColor = "#" + ColorValue; 

} 

function setbackgroundTitle() 
{ 
    window.setTimeout("setbackgroundTitle()", 600); // milliseconds delay 

    var index = Math.round(Math.random() * 4); 

    var ColorValue = "FFFFFF"; // default color - white (index = 0) 

    if(index == 1) 
     ColorValue = "66FF33"; 
    if(index == 2) 
     ColorValue = "FF0000"; 
    if(index == 3) 
     ColorValue = "FF00FF"; 
    if(index == 4) 
     ColorValue = "0000FF"; 


    document.getElementById("title")[0].style.backgroundColor = "#" + ColorValue; 

} 

CSSコード:

#title{ 
    background-color:#11f22f; 
    height:300px; 
    width:400px; 
    margin:25px auto 0 auto; 
    -moz-border-radius:25px; 
    -webkit-border-radius:25px; 
} 

HTMLコード:

<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
     <title>HomeWork</title> 
     <script type="text/javascript" src="crazy.js"> </script> 
     <link rel="stylesheet" type="text/css" href="HomeWork2.css" /> 

    </head> 
    <body> 

    <body onload="setbackground();"> 
     <div id="title" onload="setbackgroundTitle();"> hjhjhkj dfvdfsv dfgvkdfsk dfs</div> 
    </body> 
</html> 
+0

将来、 'setTimeout'の文字列ではなく、無名関数の使用を検討してください。 'setTimeout(function(){setbackgroundTitle()}、600);'で十分です。 –

+0

__一般的なコードのヒント:__このようないくつかのifステートメントがある場合、indexが1であっても、そのたびにすべてが実行されます。代わりにswitchステートメントを使用します。または、この場合、さらに良い解決策は、すべての色の値を配列に格納し、myColorArray [index]を使用して値を取得することです。 –

+0

これはhttp://stackoverflow.com/questions/25455485/how-change-background-color-of-html-elements-with-javascript-in-a-certain-time-p/25455719#25455719 –

答えて

1

最初に実行するときにDOMが正しくロードされていることを確認するために、オンロードイベントでそれを呼び出すには、ペーストのエラーをコピーします。代わりにdocument.getElementById("title")[0].style.backgroundColor = "#" + ColorValue;それによるとdocument.getElementById("title").style.backgroundColor = "#" + ColorValue; があるはずですHow to make a div onload function?動作しません。 私はsetbackground()にすべてを置いて動作しました;)

+0

私はすべてをsetbackground()に移していただきありがとうございます – toky

1

ので、試してみてください。

document.getElementById("title").style.backgroundColor = "#" + ColorValue; 
+0

と同じです変更はありません。多分問題はhtmlファイルにあります。助言がありますか? – toky

0

それが宿題であれば、宿題としてあなたの質問にタグを付けてください。エルス

、jQueryのようにあなたの人生になるだろうな単純な:

$("body").css("background", "#456789"); 

または

$("h1").css("background", "#456789"); 
+0

これはタグ付きjQueryでもありません:) – Starx

+0

タグなしjQueryは、私が質問に対する簡単な解決法を提案すべきではありません。今日の時点では、純粋なJavascriptを使用しているケースは95%ありません(宿題は有効な理由ですが、言語を学ぶために:) –

+0

jQueryプロジェクトの人は確かにその点を見ています。冷静な男。 – Starx

0

問題はスクリプトが実行されていたとき、DOMがロードされていなかったということかもしれません。

この関数を訂正すると、出力としてdocument.getElementById("title")が配列として仮定されますが、そうではありません。

document.getElementById("title").style.backgroundColor = "#" + ColorValue; 

、スクリプトが

window.onload = function() { 
setbackgroundTitle(); 
}; 
関連する問題