Javascript 为什么我猜年龄的分数不起作用?

Javascript 为什么我猜年龄的分数不起作用?,javascript,html,css,Javascript,Html,Css,我正在创建一个从图像中猜出名字的游戏。每场比赛有10轮,10轮后有一轮奖金,你要猜他们多大了,然后下注。你必须在他们年龄的2年内猜。如果您猜对了,那么您下注的金额将添加到您现有的分数中。如果不正确,则您的分数将按您下注的金额减少 如果我猜比实际年龄低2岁,那么加起来是正确的。 如果我猜对了确切的年龄,那么加起来是正确的。 但是如果我猜比实际年龄高2岁,那么分数就会降低,这是不应该的。我不知道我做错了什么 下面是我的代码预览: var age = calcAge(celeb_q_a[celeb_q

我正在创建一个从图像中猜出名字的游戏。每场比赛有10轮,10轮后有一轮奖金,你要猜他们多大了,然后下注。你必须在他们年龄的2年内猜。如果您猜对了,那么您下注的金额将添加到您现有的分数中。如果不正确,则您的分数将按您下注的金额减少

如果我猜比实际年龄低2岁,那么加起来是正确的。 如果我猜对了确切的年龄,那么加起来是正确的。 但是如果我猜比实际年龄高2岁,那么分数就会降低,这是不应该的。我不知道我做错了什么

下面是我的代码预览:

var age = calcAge(celeb_q_a[celeb_q_a.length-1].dob);
        age = age.toFixed(0);
        alert(age);
        var user_age = document.getElementById("answer-age").value;
        var prev_score = score * 10;
        if ((((age - 2) == user_age)) || (age == user_age) || ((2 + age) == user_age)) {
            prev_score += (document.getElementById("wage").value  * 1);
        }else{
            prev_score -= (document.getElementById("wage").value * 1);
        }

我建议改为一对“小于或等于”和“大于或等于”,分别包括+2岁和-2岁之间的所有值。即

if ((age + 2) <= user_age && (age - 2) >= user_age) {
    // do stuff
}
if((年龄+2)=用户年龄){
//做事
}

您可以通过测试失败的年龄来简化条件:

if ((age - 2) < user_age) || ((age + 2) > user_age) {
    prev_score -= (document.getElementById("wage").value * 1);
} else {
    prev_score += (document.getElementById("wage").value * 1);    
}
if((年龄-2)user_年龄){
上一个分数-=(document.getElementById(“工资”).value*1);
}否则{
上一个分数+=(document.getElementById(“工资”).value*1);
}
你必须在他们年龄的2年内猜

您可以使用以下代码简化范围验证:

/*运行测试*/
log(isAnswerCorrect(17,20,2))//预期为false
log(isAnswerCorrect(18,20,2))//预期为true
log(isAnswerCorrect(19,20,2))//预期为true
log(isAnswerCorrect(20,20,2))//预期为true
log(isAnswerCorrect(21,20,2))//预期为true
log(isAnswerCorrect(22,20,2))//预期为true
log(isAnswerCorrect(23,20,2))//预期为false
/*检查器*/
函数isAnswerCorrect(猜测、实际、范围){
如果(猜测<实际-范围|实际+范围<猜测){
返回错误
}否则{
返回真值
}

}
您可以简化if语句:if(Math.abs(age-user_-age)我已经尝试过了,如果输入的年龄比实际年龄多2岁,它仍然会扣除下注点数,而不是将其相加。一定是Javascript的东西