如何使我的计算器打印数字,而不是得到解析错误?



我一直想制作一个自定义计算器来查找游戏中的赔率,但我遇到了一个问题,分母打印

<!DOCTYPE html>
<html lang="en">
<head>
<title>Roaming Odds</title>
<meta charset=utf-8>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<script type="text/javascript">
var CharmMultiplier=1
var BoostMultiplier=1
function Multiply()
{
var Charm, Boost, RoamingAmount, Denominator, RoamingCalc, CharmMultiplier, BoostMultiplier;
// checking to see if the user has charm or boost
// having the charm halves the chance of finding a roaming (1/1024 becomes 1/512)

switch(Charm) {
case true:
CharmMultiplier = 0.5
break;
case false:
CharmMultiplier = 1
break;
default:
CharmMultiplier = 1
}  
// having the boost decreases the chance by 4 (1/1024 becomes 1/256)
// having both the boost and chance is supposed to make the odds go from 1/1024 to 1/128 (decreased by 8x)
switch(Boost) {
case true:
BoostMultiplier = 0.25
break;
case false:
BoostMultiplier = 1
break;
default:
BoostMultiplier = 1
}
Result = 1024*CharmMultiplier*BoostMultiplier/RoamingAmount;
document.RoamingCalc.Denominator.value=Result;

}
</script>
<form name="RoamingCalc">
<!-- all the factors to account for when calculating odds-->
<label for="RoamingName">Roaming (optional):</label>
<input type="text" id="RoamingName" name="RoamingName">
<label for="Charm">Charm</label>
<input type="checkbox" id="Charm">

<label for="Boost">Boost</label>
<input type="checkbox" id="Boost">
<label for="RoamingAmount">Amount of Roamings Unlocked: </label>
<input type="number" id="RoamingAmount" name="RoamingAmount">
<label for="Denominator">Result: 1 in </label>
<input type="number" id="Denominator" name="Denominator"><br>
<input type="button" value="Calculate" onclick="Multiply()">

</form>

</body>
</html>

我一直得到的错误是:指定值"NaN"无法解析,或超出范围。乘法@ roamingods .html:43onclick @ roamingads .html:66

我试过重写第43行,因为它一直高亮显示,但我是Javascript新手,所以我可能做得很糟糕

编辑3/12:代码现在可以在你们的帮助下工作+更改

<html lang="en">
<head>
<title>Roaming Odds</title>
<meta charset=utf-8>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<script type="text/javascript">
var CharmMultiplier=1
var BoostMultiplier=1
function Multiply()
{
var Charm, Boost, RoamingAmount, Denominator, RoamingCalc, CharmMultiplier, BoostMultiplier;

// checking to see if the user has charm or boost
// having the charm halves the chance of finding a roaming (1/1024 becomes 1/512)

if (document.getElementById("CharmID").checked){
CharmMultiplier = 0.5 ;
}else{
CharmMultiplier = 1 ;
}
// having the boost decreases the chance by 4 (1/1024 becomes 1/256)
// having both the boost and chance is supposed to make the odds go from 1/1024 to 1/128 (decreased by 8x)
if (document.getElementById("BoostID").checked){
BoostMultiplier = 0.25 ;
}else{
BoostMultiplier = 1 ;
}

if (document.getElementById("RoamingNameID"))
RoamingAmount = Number(document.getElementById("RoamingAmountID").value) || 1;
Result = 1024*BoostMultiplier*CharmMultiplier*RoamingAmount

document.RoamingCalc.Denominator.value=Result;

}
</script>
<form name="RoamingCalc">
<!-- all the factors to account for when calculating odds-->
<label for="RoamingNameID">Roaming (optional):</label>
<input type="text" id="RoamingNameID" name="RoamingName">
<label for="CharmID">Charm</label>
<input type="checkbox" id="CharmID" name="Charm">

<label for="BoostID">Boost</label>
<input type="checkbox" id="BoostID" name="Boost">
<label for="RoamingAmountID">Amount of Roamings Unlocked: </label>
<input type="number" id="RoamingAmountID" name="RoamingAmount">
<label for="DenominatorID">Result: 1 in </label>
<input type="number" id="DenominatorID" name="Denominator"><br>
<input type="button" value="Calculate" onclick="Multiply()">

</form>

</body>
</html>```

我希望这是正确的,但问题是RoamingAmountundefined。你应该给它一个值。NaN是经过undefined的一个数的结果。如:

console.log(1/undefined);

您没有从输入中获得信息。在你的例子中:

RoamingAmount = Number(document.getElementById('RoamingName').value) || 1;

您使用document.getElementById('#id')来选择元素。之后,.value以文本形式获取输入中的值,最后将所有内容包装在Number()中,使其成为数字并能够计算。当您使用除法时,使用三进制|| 1将使数字1不影响无效或空值

的结果。结果:

<!DOCTYPE html>
<html lang="en">
<head>
<title>Roaming Odds</title>
<meta charset=utf-8>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<script type="text/javascript">
var CharmMultiplier=1
var BoostMultiplier=1
function Multiply()
{
var Charm, Boost, RoamingAmount, Denominator, RoamingCalc, CharmMultiplier, BoostMultiplier;
// checking to see if the user has charm or boost
// having the charm halves the chance of finding a roaming (1/1024 becomes 1/512)

switch(Charm) {
case true:
CharmMultiplier = 0.5
break;
case false:
CharmMultiplier = 1
break;
default:
CharmMultiplier = 1
}  
// having the boost decreases the chance by 4 (1/1024 becomes 1/256)
// having both the boost and chance is supposed to make the odds go from 1/1024 to 1/128 (decreased by 8x)
switch(Boost) {
case true:
BoostMultiplier = 0.25
break;
case false:
BoostMultiplier = 1
break;
default:
BoostMultiplier = 1
}

RoamingAmount = Number(document.getElementById('RoamingName').value) || 1;
Result = 1024*CharmMultiplier*BoostMultiplier/RoamingAmount;

document.RoamingCalc.Denominator.value=Result;

}
</script>
<form name="RoamingCalc">
<!-- all the factors to account for when calculating odds-->
<label for="RoamingName">Roaming (optional):</label>
<input type="text" id="RoamingName" name="RoamingName">
<label for="Charm">Charm</label>
<input type="checkbox" id="Charm">

<label for="Boost">Boost</label>
<input type="checkbox" id="Boost">
<label for="RoamingAmount">Amount of Roamings Unlocked: </label>
<input type="number" id="RoamingAmount" name="RoamingAmount">
<label for="Denominator">Result: 1 in </label>
<input type="number" id="Denominator" name="Denominator"><br>
<input type="button" value="Calculate" onclick="Multiply()">

</form>

</body>
</html>

相关内容

最新更新