[英]how to subtract a value if the checkbox in un-checked
我做了一个用于计算的功能(游戏统计计算器),它工作正常,但是当我取消选中该值时,它不会减去选中框所添加的值,我知道代码看起来有些丑陋,但是我是一个初学者在JS中:
function MC () {
check=document.getElementById('check').checked;
if(check){
var hp=Number(document.form.hp.value),
sp=Number(document.form.sp.value),
ea=Number(document.form.ea.value),
ed=Number(document.form.ed.value),
pa=Number(document.form.pa.value),
pd=Number(document.form.pd.value);
var hpSum = 0,spSum=0,eaSum=0,edSum=0,pdSum=0,paSum=0;
eaSum = ea + 11;
edSum = ed + 17;
pdSum = pd + 17;
paSum = pa + 11;
document.form.ea.value=eaSum;
document.form.ed.value=edSum;
document.form.pa.value=paSum;
document.form.pd.value=pdSum;
}
if(check == false){
eaSum = ea - 11;
edSum = ed - 17;
pdSum = pd - 17;
paSum = pa - 11;
document.form.ea.value=eaSum;
document.form.ed.value=edSum;
document.form.pa.value=paSum;
document.form.pd.value=pdSum;
}
};
当我取消选中NaN时它会返回(但它应该是一个数字)。另外,请不要因为我只是在那儿进行初始化而将MC当作一项,因为在此示例中我需要它。
我会尝试这样的事情:
function MC () {
var check=document.getElementById('check').checked;
var hp=Number(document.form.hp.value),
sp=Number(document.form.sp.value),
ea=Number(document.form.ea.value),
ed=Number(document.form.ed.value),
pa=Number(document.form.pa.value),
pd=Number(document.form.pd.value);
var hpSum = 0,spSum=0,eaSum=0,edSum=0,pdSum=0,paSum=0;
if(check){
eaSum = ea + 11;
edSum = ed + 17;
pdSum = pd + 17;
paSum = pa + 11;
} else {
eaSum = ea - 11;
edSum = ed - 17;
pdSum = pd - 17;
paSum = pa - 11;
}
document.form.ea.value=eaSum;
document.form.ed.value=edSum;
document.form.pa.value=paSum;
document.form.pd.value=pdSum;
}
您的代码中的一般问题:
if(condition)/if(!condition)
上使用if(condition)/if(!condition)
if(condition)/else
形式; spSum
局部变量,将其设置为0而不使用它。 hpSum
也已声明但未使用。 因为仅当check
为true
才分配变量的值。 您必须将它们放出if
语句:
function MC () {
// user `var`! Otherwise you're polluting the global scope
var checked = document.getElementById('check').checked;
// if it's checked then the `sign` is +, otherwise -.
var sign = ~-(checked << 1);
// don't repeat yourself, and cache `form` for a faster access.
// I assume from your code that `form` is the name of your form, so:
var form = document.forms["form"]; // reduce ambiguity
// Unary plus operator:
// https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Arithmetic_Operators
var ea = +form.ea.value;
var ed = +form.ed.value;
var pa = +form.pa.value;
var pd = +form.pd.value;
// I removed `hp` and `sp` because not used
// the multiplication operator takes the precedence
var eaSum = ea + 11 * sign;
var edSum = ed + 17 * sign;
var pdSum = pd + 17 * sign;
var paSum = pa + 11 * sign;
// set the values back
form.ea.value = eaSum;
form.ed.value = edSum;
form.pa.value = paSum;
form.pd.value = pdSum;
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.