2017-02-03 13 views
0

以下のコードは、ユーザーが値を入力できるプログラムの開始点であり、コンピュータが値を推測します。私は自分の入力検証に固執しています。私は、このようなしかし、25と49JavaScript:値の小数点以下桁数が異なると論理比較が失敗する

Image of passed input validation

と同じ小数点以下の桁と数字を比較したとき、私は入力検証が必要がありますが、9および25のようなものを比較しようとすると、私の入力検証は、合格何らかの理由それを許可すると、私のコードのelse部分に行きます。私はこれが、JavaScriptがデータ型を解釈する方法と関係があると考えています。コードはちょっと混乱しており、プログラムは完全ではありません。フォーカスは、HTMLと入力検証から値を引き出しているところです。ここにコードがあります。

function runGame() { 
    //get variables from the input fields in HTML form 
    var low = document.getElementById('lowNum').value; 
    var high = document.getElementById('highNum').value; 
    var guess = document.getElementById('compGuess').value; 

    //input validation 
    if (low < high && low > 0 && high <= 50 && guess > 0 && guess <= 10) { 
     alert("Low number: " + low + "\nHigh Number: " + high + "\nComputer Guesses: " + guess); 
     document.getElementById("computerGuessVal").innerHTML = getRndInteger(low, high); 
    } else { 
     alert("Invalid selection. Make sure that the number range is between 1 and 50 and guesses are higher than zero."); 
    } 
} 

function getRndInteger(low, high) { 
    high = Math.floor(high); 
    low = Math.ceil(low); 
    return Math.floor(Math.random() * (high - low + 1)) + low; 
} 
+0

console.log paramsを使用してデータ型をチェックし、parseIntまたはparseFloatを使用して正しい型にします – LordNeo

+0

コードに構文エラーがあります。 2番目の閉じ括弧のために関数は "else"の前で終了します。 – AmericanUmlaut

+1

インデントが一貫していないことと余分な余白があるため、コードを読みにくくなります。 (私は文法エラーとインデントと空白を解決するために質問を編集しました。あなたの質問をよりうまく整形しようとしてください) – AmericanUmlaut

答えて

0

アップデート - 私はデータタイプのアラート(typeof演算の推測)と

を確認した後、自分のコードにのparseIntを追加した解決しました。ここでは、作業コードは次のとおりです。

// HTMLフォームの入力フィールドから変数を取得し、

VAR低い=のparseInt(のdocument.getElementById(「lowNum」)値を。)整数に変換します。

var high = parseInt(document.getElementById( 'highNum')。value);

var guess = parseInt(document.getElementById( 'compGuess')。value);

ありがとうございました!

関連する問題