2017-04-22 5 views
-2

17人以上の人が入力した場合でも、私の関数の出力がデフォルトになる理由を教えていただけますか?それはおそらく超シンプルだ、私に簡単に行け!Javascript関数のデフォルト値が間違っています(私だと思います)

function oddOrEven(number) { 
 
    var number = document.getElementById('number').value; 
 
    if(number % 2 != 0) { 
 
    document.getElementById('demo').innerHTML = "Odd"; 
 
    } 
 
    
 
    else { 
 
    document.getElementById('demo').innerHTML = "Even"; 
 
    } 
 
    if (number.length === 0) { 
 
    document.getElementById('demo').innerHTML = "Odd/Even"; 
 
    } 
 
}

+1

は、完全なコードを提供します。 –

+3

あなたの関数は 'number'をパラメータとして書かれていますが、関数が最初に行うことはパラメータ値を上書きすることです。関数はどのように呼び出されますか? – Pointy

+3

また、「17を超える数字」は何を意味するのでしょうか? 17の数字どこに? – Pointy

答えて

-1

あなたはこの全体のことを簡素化することができます。あなたは常にidを持つ「番号」の入力をつかんでいる場合、あなたはのparamを渡す必要はありません、その後、簡単なテストの後にあなたが望む答えインライン化することができます:私はちょうどキャッチ、言ったすべての

function oddOrEven(){ 
    var val = document.getElementById('number').value; 
    var number = parseInt(val, 10); 
    // if it's not a valid number, you'll have NaN here which is falsy 
    if (number) { 
     document.getElementById('demo').innerHTML = (number % 2) ? "Even" : "Odd"; 
    } 
} 

をこの機能を2回以上使用するのではなく、17桁の数字(@ JJJのコメントのおかげで)を話していることになります。この場合の問題は、JS整数にサイズ制限があることです。より大きなものを解析すると、期待しない数値が返されます。 http://2ality.com/2012/07/large-integers.htmlが、あなたの弾性問題のために、あなたは最後の桁を取り、それが奇数または偶数そうのようなものですかどうかを確認できます:そこここに非常に多くの一般的な取り扱いの議論の多くは、

function oddOrEven(){ 
    var val = document.getElementById('number').value; 
    var number = parseInt(val, 10); 
    // if it's not a valid number, you'll have NaN here which is falsy 
    if (number) { 
     var lastDigit = val[val.length-1]; 
     document.getElementById('demo').innerHTML = (parseInt(lastDigit, 10) % 2) ? "Even" : "Odd"; 
    } 
} 
+0

共有いただきありがとうございます。私のコードをどのように洗練させるのがいいか見てうれしいです。とても有難い! – danboswell

+0

- ボタンに当たっている人は、問題の内容を知り、訂正できるようコメントを提供する必要があります。 – Paul

+0

問題は* "私の関数は17を超える数字を挿入してもデフォルト値になります" * - このコードはまったく同じ問題を抱えています。 – JJJ

関連する問題