我正在尝试使用.blur
根据select
框更新计算功能。例如,当用户首次将框从0
更改为1
时,它会起作用,但在此之后更改时,它将不会反转先前的计算。 #to_condition
是文本中显示的id
,最初为10
。将#is_bent_num
从0
更改为1
后,#to_condition
正在0.5
正确递减到9.5
,但如果我再次更改,请说到3
,而不是添加0.5
然后减去1.5
(制作#to_condition
8.5
),它会从1.5
中减去9.5
},制作#to_condition = 8
。
var bent_num = 0.5;
var bent_orig = $("#is_bent_num").val();
$("#is_bent_num").blur(function(){
var bent_new = $("#is_bent_num").val();
updatecondition(bent_num * bent_orig * -1);
updatecondition(bent_num * bent_new);
bent_orig = bent_times;
});
function updatecondition(newcondition){
var changecondition = $("#condition_exact").val() - newcondition;
$("#condition_exact").val(changecondition);
if (changecondition < 0){
changecondition = 0;
}
changecondition = changecondition.toFixed(1);
$("#to_condition").text(changecondition);
}
答案 0 :(得分:1)
詹姆斯,我认为你没有粘贴整个代码,例如bent_times的定义缺失。然而,对我来说,显然前两行更新条件是导致问题的原因。你应该总是从$(“#is_bent_num”)中减去.val()不是$(“#condition_exact”)。val()
答案 1 :(得分:0)
调用函数updatecondition时调入#to_condition的结果取决于发送到函数的newcondition参数和#condition_exact值,并且每次调用updateconditino时都会更新后者。也许#condition_exact值的更新是导致问题的原因?
$("#condition_exact").val(changecondition);
答案 2 :(得分:0)
我认为你的问题在这里:
updatecondition(bent_num * bent_orig * -1);
updatecondition(bent_num * bent_new);
您基本上更新了#condition_exact
字段两次;一次使用基于bent_num
的值,一次使用基于用户输入的值(bent_new
)。第二次更新(当然)是您将看到的。我想你的意思是:
updatecondition(bent_orig - (bent_num * bent_new));
现在该字段仅会更新一次。新值将是原始值,减去用户的输入时间bent_num
。
顺便说一下,你的变量名有点令人困惑。例如,bent_num
是什么意思?是步长吗?看过这段代码的其他人会知道这意味着什么吗? (我当然不会。)如果你在6个月后再次查看代码,请问你吗?因此,如果bent_num
是步长,为什么不称之为step_size
(或stepSize
)?