使用所选数量添加价格-JavaScript

使用所选数量添加价格-JavaScript,javascript,jquery,Javascript,Jquery,我正在尝试构建一个函数,它获取购物卡中产品的所有价格,并将价格乘以用户选择的数量 首先,我构建这个函数: function calculate() { var total = 0; var priceCells = document.getElementsByClassName("priceCell"); for (var i = 0; i < priceCells.length; i++) { var thisPrice = priceCells[

我正在尝试构建一个函数,它获取购物卡中产品的所有价格,并将价格乘以用户选择的数量

首先,我构建这个函数:

function calculate() {
    var total = 0;
    var priceCells = document.getElementsByClassName("priceCell");
    for (var i = 0; i < priceCells.length; i++) {
        var thisPrice = priceCells[i].innerHTML;
        var quantity = document.getElementsByClassName("quantity")[i].value;
        thisPrice = thisPrice * quantity;
        total = total + thisPrice;
    }
    total = total.toFixed(2);
}
我怎么知道?我对javascript还是新手

我通过以下方式获得所有不同的价格:

var priceCells = document.getElementsByClassName("priceCell");
我获取用户在foreach循环中选择的数量,其中包括:

var quantity = document.getElementsByClassName("quantity")[i].value;

Jquery是允许的。我被卡住了。

要实现这一点,您只需将
更改
粘贴
事件处理程序附加到
.quantity
元素,然后这些元素循环遍历所有元素,以创建一个包含产品线总数的数组。试试这个:

$('.quantity')。在('change',getTotals');
函数getTotals(){
变量总计=$('.quantity').map(函数(){
var$tr=$(this.closest('tr');
返回parseFloat($tr.find('.priceCell').text())*parseInt($(this.val(),10);
}).get();
控制台日志(总计);
}
getTotals();//加载时

50$
20$
5$

要实现这一点,您只需将
更改
粘贴
事件处理程序附加到
.quantity
元素,然后这些元素循环遍历所有元素,以创建一个包含产品线总计的数组。试试这个:

$('.quantity')。在('change',getTotals');
函数getTotals(){
变量总计=$('.quantity').map(函数(){
var$tr=$(this.closest('tr');
返回parseFloat($tr.find('.priceCell').text())*parseInt($(this.val(),10);
}).get();
控制台日志(总计);
}
getTotals();//加载时

50$
20$
5$
试试这个:

我制作了一个名为
calculateSinglePrice()
的函数,它计算每行的总价

calculateSinglePrice();
函数计算(){
var合计=0;
var priceCells=document.getElementsByClassName(“priceCell”);
对于(var i=0;i

50$
20$
5$
试试这个:

我制作了一个名为
calculateSinglePrice()
的函数,它计算每行的总价

calculateSinglePrice();
函数计算(){
var合计=0;
var priceCells=document.getElementsByClassName(“priceCell”);
对于(var i=0;i

50$
20$
5$

Wow,这就像一种魅力,比我的尝试要好得多。。。映射方法对我来说是新的。。有没有办法让我的calucalte功能更高效一点?很乐意帮忙。关于优化,你真的做不了多少。你所做的就是把两个数字相乘。您可以使用
data
属性来避免将值强制转换为float/int,但这只是次要的。当然不是性能问题。谢谢!这同样有效:)我已经更新了问题中的HTML部分。请看一看。我想在第三个*输出*中输出每个结果?我看到了-这与最初的问题完全不同。你真的应该开始一个新的问题。你说得对,无论如何,谢谢!我会先自己尝试:)哇,这就像一个魅力,比我的尝试要好得多。。。映射方法对我来说是新的。。有没有办法让我的calucalte功能更高效一点?很乐意帮忙。关于优化,你真的做不了多少。你所做的就是把两个数字相乘。您可以使用
data
属性来避免将值强制转换为float/int,但这只是次要的。当然不是性能问题。谢谢!这同样有效:)我已经更新了问题中的HTML部分。请看一看。我想在第三个*输出*中输出每个结果?我看到了-这与最初的问题完全不同。你真的应该开始一个新的问题。你说得对,无论如何,谢谢!我先自己试试:)谢谢!这同样有效:)我已经在中更新了HTML部分
var priceCells = document.getElementsByClassName("priceCell");
var quantity = document.getElementsByClassName("quantity")[i].value;