我在这里错过了一些愚蠢的东西 一个简单的脚本,用于确定行驶公里数的报销率乘以允许的税额(基于一个引擎大小)。
每个步骤的日志显示找到正确的值,但是使用name = reimbursement属性的文本输入中的最后一步返回“$ 0”。
我错过了什么?
function calcRate() {
var engineRate = Number(jQuery( "input[name='enginesize']:checked" ).val());
var distanceTravelled = 0.0;
var distances = new Array();
distances[0] = Number(jQuery("#field_Distance1").val());
distances[1] = Number(jQuery("#field_Distance2").val());
distances[2] = Number(jQuery("#field_Distance3").val());
distances[3] = Number(jQuery("#field_Distance4").val());
distances[4] = Number(jQuery("#field_Distance5").val());
for(var i=0; i<distances.length; i++) {
if(!isNaN(distances[i])) {
distanceTravelled = distanceTravelled + distances[i];
}
}
jQuery("input[name=reimbursement]").val("$" + distanceTravelled * engineRate);
}
jQuery("input[type=radio],input[type=text]").on("change",calcRate);
答案 0 :(得分:2)
我将总和行改为
distanceTravelled += distances[i];
我还将动态值与临时值交换,显示$150
,这是预期的结果(与@cbp提到的括号无关)。
function calcRate() {
var engineRate = 10;
var distanceTravelled = 0.0;
var distances = new Array();
distances[0] = 1;
distances[1] = 2;
distances[2] = 3;
distances[3] = 4;
distances[4] = 5;
for (var i = 0; i < distances.length; i++) {
if (!isNaN(distances[i])) {
distanceTravelled += distances[i];
}
}
alert("$" + distanceTravelled * engineRate);
}
calcRate();
然后我在输出文本框中交换了jQuery选择器,它显示$150
:
<input name="reimbursement" />
假设发动机速率是单选按钮,我继续将它们添加到:
<input type="radio" name="enginesize" value="10" />10<br>
<input type="radio" name="enginesize" value="100" />100<br>
<input type="radio" name="enginesize" value="1000" />1000<br>
点击其中任何一个都会显示预期结果:$ 150,$ 1500,$ 15000
我只能断定field_Distance
的选择器错误:
jQuery("#field_Distance1")
您可能希望使用此字段来获取字段的名称,因为#
表示您正在获取ID属性,这可能会丢失。
jQuery("input[name=field_Distance1]")
为什么显示 $ 0 呢?由于选择器错误,数组现在包含NaN
个值。在for循环之后,distanceTravelled仍为0.0
,因为!isNaN(distances[i])
返回false,跳过总和。最后,任何乘以0的东西都会返回0。
答案 1 :(得分:1)
如有疑问,请添加括号:
jQuery("input[name=reimbursement]").val("$" + (distanceTravelled * engineRate));