2017-04-22 49 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"; 
    } 
} 

所有這一切說,我只是抓住了你說的是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