嗨,有人可以告诉我为什么即使插入超过17个数字,我的函数输出也会默认为?它可能非常简单,请放轻松我!
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";
}
}
答案 0 :(得分:-1)
你可以简化这一切。如果您总是使用ID'数字'来抓取输入。你不需要通过一个参数,然后在一个简单的测试后你可以内联你想要的答案:
@Override
public void onImageAvailable(ImageReader reader) {
Log.d(TAG, "I'm an image frame!");
Image image = reader.acquireNextImage();
...
if (image != null)
image.close();
}
所有这一切,我刚刚发现你正在谈论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) {
document.getElementById('demo').innerHTML = (number % 2) ? "Even" : "Odd";
}
}