2016-04-08 8 views
0

私は単純なif文を作成して、divの背景色を別のdivに入力された数に応じて変更しようとしています。私はコードにいくつかの変更を加えようとしましたが、最後のelse ifステートメントを働かせることはできません。最後のelse if文が動作しない

if ($(".pacenumber").text() <= "59") { 
document.getElementById("paceheader").style.backgroundColor = "red"; 
} 
else 
if ($(".pacenumber").text() >= "60" < "80") { 
document.getElementById("paceheader").style.backgroundColor = "yellow"; 
} 
else 
if ($(".pacenumber").text() >= "80") { 
document.getElementById("paceheader").style.backgroundColor = "green"; 
} 

入力した番号が正しく赤に< = "59" のdivの変更である場合。

入力された数字が> = "60"で、< "80"の場合、divは正しく黄色に変わります。

入力された数値が> = "80"の場合、divは黄色のままで緑色に変わりません。

最後のif文を実行するための解決策はありますか?

+4

> = "60" <"80"は無効で、数字ではなく文字列を比較しています。 – epascarello

+0

複数のif/if elseの最後の文はelse – zer00ne

+1

です。コードで示唆しているものと数字を比較しています。代わりに文字列を比較しているのはなぜですか?たとえば、文字列を比較しているので、文字列 "7"は** not ** "63"より小さく、テキストでは "6"で始まるものは "7"で始まるものの前に来ます。これらの '... text()'呼び出しを 'parseInt(...)'でラップしてから実数と比較すると、このコードはバグの原因になります。 –

答えて

1

を返します。値が範囲内にある場合:

if ($(".pacenumber").text() >= "60" < "80") { 

これは、あなたが

if (($(".pacenumber").text() >= "60") < "80") { 
を書いたかのように解釈されます210 ($(".pacenumber").text() >= "60")は、 trueまたは falseのいずれかを返します。ブール値と文字列を比較すると、 false"0"に変換され、 true"1"に変換されます。両方とも "80"より小さく、テストは常に真です。

ただ、以前ifが少ないこれよりすべての値の世話をするので、それは、少なくとも"60"かどうかをテストする必要はありません

else 
if ($(".pacenumber").text() < "80") { 

を使用しています。それがelse ifになると、それは>= "60"でなければなりません。

+0

最終的なifが決して到達されない理由の優れた説明。 –

+0

ありがとう、完璧に働いた!私はjavascriptを使っていないので、if文がどのように働いているか完全に忘れてしまった。 – Lparker

0

コメント者が言ったように、2番目のブランチにはパーツがありません。文字列ではなく数字を使用して比較する必要があります。

function tt(t) { 
    if (t <= 59) { 
     return 1; 
    } 
    else 
    if (t >= 60 && t < 80) { 
     return 2; 
    } 
    else 
    if (t >= 80) { 
     return 3; 
    } 
} 

tt("080")は、上記の定義を使用して1を返す関数を呼び出し、文字列(「80」、「60」など)を使用して、それはあなたがチェックするために、この構文を使用することはできません3.

+0

複数のelse-ifステートメントの最後のエントリは常に 'else'です。これはJSに問い合わせが終了していることを示し、左かっこを持つ別のサブルーチンへの引き込みを期待しています。 – Sparky256

+0

'if(var ==" a "){} else if(var ==" b "){} else if(この場合、最後のものが 'else'に変更された場合、 'a'と 'b'を除くすべての値がこのコードを実行しますが、これは意図されていません。 –

0

単に以下のコードは次のようになります。

var pace = parseInt($(".pacenumber").text(), 10); 
var color = "green"; 

if (pace < 60) { 
    color = "red"; 
} else if (pace < 80) { 
    color = "yellow"; 
} 
document.getElementById("paceheader").style.backgroundColor = color; 

ノートjqueryのを繰り返し呼び出しの欠如と背景色が

0

に設定されている1つの場所だけ変更

($(".pacenumber").text() >= "60" < "80") { 

($(".pacenumber").text() >= "60" && $(".pacenumber").text() < "80") { 
0
if ($(".pacenumber").text() <= 59) { 
document.getElementById("paceheader").style.backgroundColor = "red"; 
} 
else 
if ($(".pacenumber").text() >= 60 < 80) { 
document.getElementById("paceheader").style.backgroundColor = "yellow"; 
} 
else 
if ($(".pacenumber").text() >= 80) { 
document.getElementById("paceheader").style.backgroundColor = "green"; 
} 
else{} 
} 

//機能を正しく終了するためにヌルターミネーターを追加しました。不合理な値は、色に変化をもたらさない。 「数字」対テキスト番号には注意してください。引用符を削除して文字通りの数字になるようにしました。数学をはるかに簡単にします。

関連する問題