2016-09-02 1 views
0

次のコードを使用して、合計5つの異なる入力から平均値を計算しています。JQueryを使用してテキストボックスに特定のテキストを表示するには?

var total = p1 + p2 + p3 + p4 + p5; 
var priority = total/5; 

私は変数の優先順位の値に基づいて、テキストボックス内の「高」、「中」「低」と表示しようとしています:

私はこのコードを使用しているが、何もであるように思いません正しい、plzは助ける:

if (5 > priority > 4) 
{ 
    $("#textbox").val('High'); 
} else if (4 > priority > 2.5) 
{ 
    $("#textbox").val('Medium'); 
} else if (2.5 > priority > 0) 
{ 
    $("#textbox").val('Low'); 
} 
+0

あなたが実際に問題を理解して、何が起こっているか見るためにデバッガであなたの論理条件を評価してください。 – tmpearce

答えて

2

をあなたが.val(function)、条件演算子を使用することができます。 priority4より大きい場合、要素セットvalue"High"; priority2.5より大きい場合は"Medium"に設定します。 "Low"

$("#textbox").val(_, function(val) { 
    return priority > 4 ? "High" : priority > 2.5 ? "Medium" : "Low" 
}); 
+0

ありがとう!これは完全に働いた:) – uxm0207

2
if (5 > priority > 4) 

に他の設定値はpriority54の間にあるかどうかをテストするための正しい方法ではありません。式は5 > (priority > 4)として解析されます。 (priority > 4)trueまたはfalseと評価され、5と比較すると1または0に変換されます。したがって、5 > 1または5 > 0のいずれかになり、どちらも真です。

正しい方法は次のとおりです。

if (5 > priority && priority > 4) 

しかしpriorityは、すべての値の間にあるかどうかをテストする必要は本当にありません。各else ifは、以前のifが失敗した場合にのみ実行されます。したがって、2番目のifにアクセスした場合は、すでにpriority > 4というケースを除外しているため、再度テストする必要はありません。また、priorityが境界値の1つと正確に等しい場合、どのケースも成功することはありません。 priority == 4の場合は、priority > 4priority < 4の両方で除外されます。それで、範囲の一方の端をチェックして、もう一方の端がそれ自身を処理します。

ので、コードは次のようになります。

if (priority > 4) { 
    $("#textbox").val("High"); 
} else if (priority > 2.5) { 
    $("#textbox").val("Medium"); 
} else { 
    $("#textbox").val("Low"); 
} 
+0

ありがとうBarmar! – uxm0207

関連する問題