我正在尝试使用Javascript计算。当我执行计算时,我可以看到脚本多次使用文本框。
例如:
第一行的计算是:
100 + 20 = 120
第二行的计算是:
100 + 0 = 100
总数应为 220 。
执行代码时,我总共得到 240 。
有人知道为什么我的脚本计算不正确吗?
JSFiddle:http://jsfiddle.net/pjybzg3t/
这是我的代码:
$(document).on('change', '[id^=neg_pos]', function selectQuantity(selectedValue) {
let neg = 0
let pos = 0
$('[id^=neg_pos]').each(function(i, e) {
var quantity = e.options[e.selectedIndex].value;
if (quantity === '0') {
} else if (quantity === '1') {
var num1 = Number(document.getElementsByName('price[]')[0].value);
var num2 = Number(document.getElementsByName('tax[]')[0].value);
var tv1 = num1 + num2;
pos += tv1;
} else {
var num3 = Number(document.getElementsByName('price[]')[0].value);
var num4 = Number(document.getElementsByName('tax[]')[0].value);
var tv5 = num3 + num4;
neg += tv5;
}
document.getElementById('positive').value = pos.toFixed(2);
document.getElementById('negative').value = neg.toFixed(2);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="text" name="price[]" id="price1" onkeypress="return isNumber(event, this)" data-srno="1">
<input type="text" name="tax[]" id="tax1" onkeypress="return isNumber(event, this)" data-srno="1">
<select id="neg_pos1" name="neg_pos[]" data-srno="1" class="form-control">
<option value="0"></option>
<option value="1">+</option>
<option value="2">-</option>
</select>
<br /><br />
<input type="text" name="price[]" id="price2" onkeypress="return isNumber(event, this)" data-srno="2">
<input type="text" name="tax[]" id="tax2" onkeypress="return isNumber(event, this)" data-srno="2">
<select id="neg_pos2" name="neg_pos[]" data-srno="2" class="form-control">
<option value="0"></option>
<option value="1">+</option>
<option value="2">-</option>
</select>
<br /><br />
<input type="text" name="price[]" id="price3" onkeypress="return isNumber(event, this)" data-srno="3">
<input type="text" name="tax[]" id="tax3" onkeypress="return isNumber(event, this)" data-srno="3">
<select id="neg_pos3" name="neg_pos[]" data-srno="3" class="form-control">
<option value="0"></option>
<option value="1">+</option>
<option value="2">-</option>
</select>
<br /><br /><br />
<input type="text" name="positive" id="positive" onkeypress="return isNumber(event, this)">
<input type="text" name="negative" id="negative" onkeypress="return isNumber(event, this)">
答案 0 :(得分:2)
问题是您正在使用document.getElementsByName('price[]')[0].value
来获取输入的值。但是该代码专门选择了第一个price[]
元素,因此您始终使用相同的值。
您需要用[0]
替换[i]
,因为i
对应于相关的[id^=neg_pos]
项目($('[id^=neg_pos]').each( function( i, e) {
中的)。