2016-12-10 9 views
-3

96より小さい数字を入力すると0が表示され、96と192の間に3が表示され、入力が192以上の場合、出力は6になります。 そうではない、いくつかの理由コードは、入力0及び1リターン0、入力2-99戻り6、100 191を介して戻り0、および192と戻り、ここで6正確な読取り値を超えているよりも大きい

上記コード

var number = document.getElementById("width").value; 
var text; 


if (number >= "192") { 
    text = "6"; 


} else if (number >= "96") { 
    text = "3"; 

} else { 
    text = "0"; 
} 
document.getElementById("smallquantity").innerHTML = text; 
+1

「#width」に入力するユーザーは何ですか?それは数字か手紙でしょうか? – BenM

+3

具体的な問題を明確にしたり、詳細を追加して必要なものを正確に強調してください。現在書かれているとおり、あなたが求めていることを正確に伝えるのは難しいです。 –

+1

文字列比較の仕組みを理解していますか? [この質問]を見てください(http:// stackoverflow。com/questions/10863092/why-is-string-11-less-than-string-3)。文字列 '' 192 ''と' 'c" 'は同じものではありません。 –

答えて

0

文字列は辞書順に比較されます。つまり、文字列をアルファベット順に並べると、文字列の順序に基づいて文字列が比較されます。数字を含む2つの文字列を比較することは、2つの数字を比較することと同じことをしません。

"2" > "1294"2の文字が1の後に来るためです。

数字を使用するようにロジックを変更するだけです。まず、HTML要素の内容を解析します。

var letter = parseInt(document.getElementById("width").value, 10); 

...その後の数字ではなく文字列を使用するように比較を変更します:

10は以下の使用ベース10番号を解釈するとき( "012"のようなものが8進数として解釈されるため、重要な小数ではない)を意味します
if (letter >= 192) 
0
あります

トライアル比較

var letter = document.getElementById("width").value; 
var text; 

// If the letter is "c" 
if (letter.localeCompare("c")) { 
    text = "6"; 

// If the letter is "e" 
} else if (letter.localeCompare("e")) { 
    text = "3"; 

// If the letter is anything else 
} else { 
    text = "0"; 
} 
document.getElementById("smallquantity").innerHTML = text; 
0

私はあなたのロジックが間違っていると思っています。 私はそれはあなたが探しているの出力を与えることになると思い

if(letter < "96") 
    text = "0"; 
else if (letter < "192") 
    text = "3"; 
else 
    text = "6"; 

次試してみてください。 しかし、私は強くあなたが入力をparseintし、番号の比較とifブロックでそれを使用することをお勧めします。

var letter = parseInt(document.getElementById("width").value); 
if(letter < 96) 
    text = "0"; 
else if (letter < 192) 
    text = "3"; 
else 
    text = "6"; 
+0

彼の全体的なアプローチが間違っていると思います。 'letter <" 192 "は非常に多くのレベルで間違っています。 –

+0

かもしれません。彼の入力が何であるかわからないので、私たちは確信できません。彼の記述から、私は彼が出力を得ているが、ブロックであれば間違った論理設計のため正しく出力されていない。 – reza

+0

と彼はまた、*最後のコメントの文字*ではなく、ユーザーが数字を入力すると述べた – reza

0

これをASCII値と比較するには、まずconvert it to ASCIIが必要です。すぐに比較することはできません。
また、文字 "c"はの値であり、192ではありません。
最初にASCIIに変換してから正しい値(数値、文字列ではない数値)と比較してください。
ロジックが間違っています - IFは "c" - > ELSEは "c"または "e"です。あなたはELSEでその "c"を得ることはありません。

var letter = document.getElementById("width").value.charCodeAt(0); 
var text; 

// If the letter is "c" 
if (letter == 99) { 
    text = "6"; 

// If the letter "e" 
} else if (letter == 101) { 
    text = "3"; 

// If the letter is anything else 
} else { 
    text = "0"; 
} 
document.getElementById("smallquantity").innerHTML = text; 

ここでその考えを理解します。それに応じてIFを調整することができます。

0

@jacobと@rezaの助けを借りて、これが私の問題を解決したコードです。これを理解するのを手伝ったすべての人に感謝します!

var number = parseInt(document.getElementById("width").value, 10); 
    var text; 
    if (number < "96") { 
    text = parseFloat(0); 

    } else if (number < "192") { 
    text = parseFloat(3); 

    } else { 
    text = parseFloat(6); 
    } 
    document.getElementById("largequantity").innerHTML = parseFloat(text) * parseFloat(quantity); 
関連する問題