JavaScript 实现购物车数量增减与总价计算逻辑

作者:交互手记

时间:2026-10-24

浏览:96

本文详解使用原生 JavaScript 实现购物车核心功能,包括商品数量增减按钮交互、单件商品价格动态计算以及总价实时汇总。代码采用基础 DOM 操作方式,保留两位小数,适合初学者理解前端交互与数值处理逻辑。

文章目录

购物车功能概述与HTML结构

本文通过具体代码示例,展示如何使用 JavaScript 实现购物车的数量增减及价格计算功能,供读者参考学习。

核心功能涵盖购物车商品数量的加减操作、单件商品价格的实时运算以及订单总价格的汇总计算,所有金额数值均保留两位小数。

购物车功能概述与HTML结构


<div class="content">
    <div class="logo">
        <img src="images/dd_logo.jpg"><span onclick="guan()">关闭</span>
    </div>
    <div class="cartList" id="zong">
        <ul>
            <li >¥21.90</li>
            <li><input type="button" name="minus" value="-" onclick="jian()"><input type="text" name="amount" value="1" id="shang"><input type="button" name="plus" value="+" onclick="jia()"></li>
            <li>¥<input type="text" name="price" value="21.90" id="yiqian"></li>
            <li><p onclick="shou()">移入收藏</p><p onclick="shan()">删除</p></li>
        </ul>
        <ul>
            <li >¥24.00</li>
            <li><input type="button" name="minus" value="-" onclick="jian1()"><input type="text" name="amount" value="1" id="shang1"><input type="button" name="plus" value="+" onclick="jia1()"></li>
            <li>¥<input type="text" name="price" value="24.00"id="erqian" ></li>
            <li><p onclick="shan()">移入收藏</p><p onclick="shan()">删除</p></li>
        </ul>
        <ol>
            <li id="totalPrice" > 0.00</li>
            <li><span onclick="jie()">结 算</span></li>
        </ol>
    </div>
    <h3 id="shijian">现在是:</h3>
</div>

上述部分为 HTML 页面结构代码。

接下来是具体的 JavaScript 脚本实现部分。

JavaScript 核心逻辑实现


var price = 0.00;
var price1 = 0.00;
var price2 = 0.00;

function jian() {
    var i = parseInt(document.getElementById("shang").valueOf().value) - 1;
    if (i <= 0) {
        i = 0;
    }
    document.getElementById("shang").valueOf().value = i;
    price1 = 21.90 * i;
    document.getElementById("yiqian").value=suan(price1);
    zong();
}
function jia() {
    var i = parseInt(document.getElementById("shang").valueOf().value) + 1;
    document.getElementById("shang").valueOf().value = i;
    price1 = 21.90 * i;
    document.getElementById("yiqian").value=suan(price1);
    zong();
}
function jian1() {
    var i = parseInt(document.getElementById("shang1").valueOf().value) - 1;
    if (i <= 0) {
        i = 0;
    }
    document.getElementById("shang1").valueOf().value = i;
    price2 = 24.00 * i;
    document.getElementById("erqian").value=suan(price2);
    zong();
}
function jia1() {
    var i = parseInt(document.getElementById("shang1").valueOf().value) + 1;
    document.getElementById("shang1").valueOf().value = i;
    price2 = 24.00 * i;
    document.getElementById("erqian").value=suan(price2);
    zong();
}

function suan(number) {
    price = price1 + price2;
    if (isNaN(number)) {
        return false;
    }
    number = Math.round(number * 100) / 100;
    var s = number.toString();
    var rs = s.indexOf(".");
    if (rs < 0) {
        rs = s.length;
        s += ".";
    }
    while (s.length <= rs + 2) {
        s += "0";
    }
    return s;
}
function zong() {
    price = price1 + price2;
    if (isNaN(price)) {
        return false;
    }
    price = Math.round(price * 100) / 100;
    var s = price.toString();
    var rs = s.indexOf(".");
    if (rs < 0) {
        rs = s.length;
        s += ".";
    }
    while (s.length <= rs + 2) {
        s += "0";
    }
    document.getElementById("totalPrice").innerHTML=s;
}

该实现采用最基础的开发方式,旨在降低理解门槛,即使前端知识基础薄弱的初学者也能轻松掌握相关知识点。

以上内容即为本文的全部分享,希望能为读者的学习带来帮助,同时也欢迎大家继续支持本站。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章