在Javascript中计算类列表的值时遇到问题
我试图把q-total类中的所有值相加,但我无法让它工作。代码如下:在Javascript中计算类列表的值时遇到问题,javascript,jquery,Javascript,Jquery,我试图把q-total类中的所有值相加,但我无法让它工作。代码如下: $(document).on("change", ".row-inputs", function(){ var total = 0; var price = 0; var multi = 0; $('.q-quantity', this).each(function(){ multi = $(this).val(); }) $(".q-price", this).each(function(){ pric
$(document).on("change", ".row-inputs", function(){
var total = 0;
var price = 0;
var multi = 0;
$('.q-quantity', this).each(function(){
multi = $(this).val();
})
$(".q-price", this).each(function(){
price += +$(this).val() * multi;
})
$(".q-total", this).val(price);
for (var i = 0; i < $(".q-total").length; i++) {
// total = 0;
// console.log($(".q-total", this).val() )
total += parseInt($(".q-total", this).val());
}
console.log("Total " + total)
})
下面是我用来向html添加新行的类代码。在这种情况下,这可能有助于找出上述代码不起作用的原因
var counter = 1;
var limit = 10;
function addInput(divName){
if (counter == limit) {
alert("You have reached the limit of adding " + counter + "
inputs");
}
else {
var newdiv = document.createElement('div');
newdiv.className = "row-inputs";
newdiv.innerHTML = "<input type='text' name=''
placeholder='product name' class='q-product-name'> " +
"<input type='number' name='' placeholder='0' class='q-quantity'
value=1> " +
"<input type='text' name='' placeholder='price' class='q-price'> "
+
"<input type='text' name='' placeholder='price' class='q-total'>";
document.getElementById(divName).appendChild(newdiv);
counter++;
}
}
谢谢您的循环不正确: 改变 在最初的for循环中,您从不迭代这些值,而是始终使用$this.val。不知道为什么你的方法不同。你在其他地方都使用过每种方法,但这是你的解决办法
为了进一步解释,请使用您的示例添加价格为3,4,5的行。第一次到第1行,jQuery集合中有一个元素,因此total=0变为total+=3;添加第二行,您有两个元素,但只查看当前行的值,因此total=0变为total+=4&&total+=4,因此total=8;在第三行更改中,有三个元素,总计=15 3*5 它在做什么不正确的事?你得到了一个错误的值吗?它会抛出错误吗?不,不是错误。但是总数与手动添加所有值不同。例如:3、4和5的3行等于12。但是应用程序给了我15。请加上你的HTML,我建议在把它加到总数时打印出来。您还可以检查html,看看那里的值是否正确
for (var i = 0; i < $(".q-total").length; i++) {
// total = 0;
// console.log($(".q-total", this).val() )
total += parseInt($(".q-total", this).val());
}
$(".q-total").each(function(){
total += +$(this).val();
})