js根据显示的div获取所有productprice并相加

js根据显示的div获取所有productprice并相加
需要获取所有display不等于none的productprice的值并相加
以这个为例 $79.99 + $70.00 + $39.99 + $39.99 的金额就是$229.97

<div class="container"
     id="finalform"
     style="">
    <div class="product-boxx"
         id="product-laptop"
         style="">
        <p class="productprice">$79.99 USDp>
    div>
    <div class="product-boxx"
         id="product-monitor"
         style="display:none;">
        <p class="productprice">$69.99 USDp>
    div>
    <div class="product-boxx"
         id="product-lapmon"
         style="display:none;">
        <p class="productprice">$99.99 USDp>
    div>
    <div class="product-boxx"
         id="product-monitor2"
         style="display:none;">
        <p class="productprice">$89.99 USDp>
    div>
    <div class="product-boxx"
         id="product-light"
         style="">
        <p class="productprice">$70.00 USDp>
    div>
    <div class="product-boxx"
         id="product-pad"
         style="">
        <p class="productprice">$39.99 USDp>
    div>
    <div class="product-boxx"
         id="product-micro"
         style="">
        <p class="productprice">$39.99 USDp>
    div>

div>

jQuery或原生js示例如下

<div class="container"
     id="finalform"
     style="">
    <div class="product-boxx"
         id="product-laptop"
         style="">
        <p class="producttitle">Laptop</p>
        <p class="productprice">$79.99 USD</p>
    </div>
    <div class="product-boxx"
         id="product-monitor"
         style="display:none;">
        <p class="producttitle">Monitor</p>
        <p class="productprice">$69.99 USD</p>
    </div>
    <div class="product-boxx"
         id="product-lapmon"
         style="display:none;">
        <p class="producttitle">Laptop</p>
        <p class="productprice">$99.99 USD</p>
    </div>
    <div class="product-boxx"
         id="product-monitor2"
         style="display:none;">
        <p class="producttitle">Laptop</p>
        <p class="productprice">$89.99 USD</p>
    </div>
    <div class="product-boxx"
         id="product-light"
         style="">
        <p class="producttitle">Laptop Light</p>
        <p class="productprice">$70.00 USD</p>
    </div>
    <div class="product-boxx"
         id="product-pad"
         style="">
        <p class="producttitle">Laptop pad</p>
        <p class="productprice">$39.99 USD</p>
    </div>
    <div class="product-boxx"
         id="product-micro"
         style="">
        <p class="producttitle">Laptop</p>
        <p class="productprice">$39.99 USD</p>
    </div>
    <input type="number" id="finalprice">
</div>


<script src="https://g.csdnimg.cn/??lib/jquery/1.12.4/jquery.min.js"></script>
<script>
    var sum = 0;

    //jQuery
    $('#finalform .product-boxx:visible p.productprice').each(function () {
        sum += parseFloat(this.innerText.substring(1));
    });
    /*//原生JS
    document.querySelectorAll('.product-boxx').forEach(item => {
        if (item.style.display != 'none') {
            sum += parseFloat(item.querySelector('p.productprice').innerText.substring(1));
        }
    })
    */

    sum = sum.toFixed(2);//保留2位小数,防止浮点数计算精度丢失
    alert(`总价为$${sum} USD`)
</script>

原生JavaScript

<script type="text/javascript">
    let parentDiv = document.getElementById("finalform");

    let childDivs = parentDiv.getElementsByClassName("product-boxx");
    let total = 0;
    for (let i = 0; i < childDivs.length; i++) {
        let childDiv = childDivs[i];
        if (childDiv.style.display != "none") {
            let line = childDiv.children[0].innerText.trim();
            total += Number(line.split("$")[1].split("USD")[0].trim())
        }
    }
    total = total.toFixed(2);
    console.log("$" + total);
</script>

原生的如下代码:

<script>
 var sum=0;
     document.querySelectorAll('.product-boxx').forEach(item => {        
        if (item.style.display != 'none') {
            sum += parseFloat(item.querySelector('p.productprice').innerText.substring(1));
        }
    })
    document.getElementById('finalprice').value=sum;//浮点数的计算会有点小BUG的,你自己应该也发现到了
    </script>

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632