2017-03-19 4 views
-3

私はDeadPixelテストのためのBackgroundColorを変更

function myFunction() { 
       var bg = document.bgColor; 
       if (bg = "black") { 
        document.getElementById("myDIV").style.backgroundColor = "white"; 
       } else if (bg = "white") { 
        document.getElementById("myDIV").style.backgroundColor = "red"; 
       } else if (bg = "red") { 
        document.getElementById("myDIV").style.backgroundColor = "green"; 
       } else if (bg = "green") { 
        document.getElementById("myDIV").style.backgroundColor = "blue"; 
       } 

このコードを試してみましたが、それは問題で何のbackgroundColorを変更しないのですか?

PS:私はあなたの目のために申し訳ありませんコーディング、に新たなんだ:/

EDIT:

私は(@Weary冒険ありがとう)

var colors = ["black", "white", "red", "green", "blue"]; 
var color = 0;  

function change_color(){ 
    var e = document.getElementById("myDIV"); 

    if(color >= (colors.length - 1)) color = 0; 
    else color++; 

    e.style.background = colors[color]; 
} 

var timer = setTimeout(change_color, 1000); 

これで私のコードを変更しかし、私はbgが青に変わった後に人々に別のページを送りたいです。window.location.replace("...");は役に立ちますか?

+0

あなたは関数を呼び出していますか?引き金と同じように? –

+0

'console.log(bg);' – epascarello

答えて

0
  • 何か他のものと等しいかどうかを確認するには、オペレータ==を使用します。
  • 変数eelement)を定義しましたので、繰り返しは少なくなりました。
  • で実行するアクションが1つのみの場合は、またはブロックにすると、中括弧を取り除き、視覚的に分かりやすくするために1行に書き込むことができます。

ここにあなたの固定コードがあります。

function myFunction() { 
    var bg = document.bgColor; 
    var e = document.getElementById("myDIV"); 

    if (bg == "black") e.style.backgroundColor = "white"; 
    else if (bg == "white") e.style.backgroundColor = "red"; 
    else if (bg == "red") e.style.backgroundColor = "green"; 
    else if (bg == "green") e.backgroundColor = "blue"; 
} 

あなたは死んだピクセルテストを行っていると言いました。もしアレイとをループに色を定義することができる:

var colors = ["black", "white", "red", "green", "blue"]; 

にタイムアウトを設定したりsetTimeout(callback, ms)関数を使用してコードを実行する前に待機することができます。 変数を関数に設定したり、関数をJavascriptの別の関数のパラメータとして渡すことができます。あなたはこれらの色ごとにXミリ秒を変更したいのであれば、これを使用する:

var colors = ["black", "white", "red", "green", "blue"]; 
var color = 0;  

function change_color(){ 
    var e = document.getElementById("myDIV"); 

    if(color >= (colors.length - 1)) color = 0; 
    else color++; 

    e.style.background = colors[color]; 
} 

var timer = setTimeout(change_color, 1000); 

colorsは、文字列の配列で、colorは、現在の色のインデックスです。したがってcolors[color]colorとすると0であり、配列の最初の要素(配列は0から始まるため)は"black"(引用符に注意してください)にアクセスします。

機能change_colorは、要素の背景色を配列から次の色に設定します。また、インデックスポインタcolorが配列から外れないようにします。

+0

これらのタイプミスが修正されたとしても、それでも問題はありません。 – epascarello

+0

@epascarelloなぜですか? –

+0

ほとんどのブラウザは名前付きの色を戻しません。 – epascarello

-1

id="myDIV"のタグが存在することを確認してください(大文字と小文字の区別があります)。タグが表示されていることを確認してください。あなたはタグが正しく表示されていることを確認しているとき、あなたは多分、このようにmyFunction();を呼び出すことを確認してください。

setTimeout(myFunction, 30000); //It will run twice/minute 

EDIT:あなたは代入演算子を使用しているところも

は、あなたが、あなたのfunctionに構文エラーがありますifelse条件の===の等号演算子ではなく、=となります。

+0

問題は明らかにif条件にあります: 'if (bg = "black") ' –

+0

@WearyAdventurer、それを指摘してくれてありがとう、それを観察しなかった。 –

0

最初の手順: jqueryライブラリをコードにインポートしていますか?

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 

はいの場合: コードでこの関数を呼び出していますか?

jsコードでmyFunction();という関数を呼び出すページを実行しましたが、私にとっては完全にsucessfullでした。あなたのためにこの作品があれば教えてください

関連する問題