原生js实现购物车相关功能

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>实现购物车的相关功能</title>
    <style>
        *{
            margin:0;
            padding:0;
        }
        table{
            width: 600px;
            border-collapse: collapse;
        }
        th,td{
            border:1px solid #000;
            width: 150px;
            /*padding:5px 40px;*/
            text-align: center;
        }
        #chart{
            width: 800px;
            margin:100px auto;
        }
        button{
            width: 20px;
            height: 20px;
        }
        thead{
            background-color: aquamarine;
        }
        tfoot{
            background-color: transparent;
        }
    </style>
</head>
<body>
    <div id="chart">
        <table>
            <thead>
                <tr>
                    <th>商品名称</th>
                    <th>单价</th>
                    <th>数量</th>
                    <th>小计</th>
                </tr>
            </thead>
            <tbody>
            <tr>
                <td>iPhone6</td>
                <td>¥4488</td>
                <td>
                    <button onclick="calc(this)">-</button>
                    <span>0</span>
                    <button onclick="calc(this)">+</button>
                </td>
                <td>
                    0
                </td>
            </tr>
            <tr>
                <td>iPhone7</td>
                <td>¥7488</td>
                <td>
                    <button onclick="calc(this)">-</button>
                    <span>0</span>
                    <button onclick="calc(this)">+</button>
                </td>
                <td>
                    0
                </td>
            </tr>
            <tr>
                <td>iPhone8</td>
                <td>¥8488</td>
                <td>
                    <button onclick="calc(this)">-</button>
                    <span>0</span>
                    <button onclick="calc(this)">+</button>
                </td>
                <td>
                    0
                </td>
            </tr>
            <tr>
                <td>iPhoneX</td>
                <td>¥9488</td>
                <td>
                    <button onclick="calc(this)">-</button>
                    <span>0</span>
                    <button onclick="calc(this)">+</button>
                </td>
                <td>
                    0
                </td>
            </tr>
            </tbody>
            <tfoot>
                <tr>
                    <td colspan="3" align="right">Total</td>
                    <td>0.00</td>
                </tr>
            </tfoot>
        </table>
    </div>

<script src="js/jquery-3.2.1.min.js"></script>
<script>
//    创建函数 calc
    function calc(btn) {
//        第一步:修改数量
//        获得btn的父节点保存在变量td中
        var td=btn.parentNode;
        console.log(td);
//        获取td下的唯一一个span元素,保存在变量span中
        var span=td.querySelector("span");
        console.log(span);
//        获得span的内容,保存在变量n中,并转化其string形式为number形式
        var n=parseInt(span.innerHTML);
        console.log(typeof(n));
//        判断:如果btn是+,就+1;否则,如果已经是1,就为0,否则就—1;
        n+=btn.innerHTML=="+"?1:n==0?0:-1;
//        设置span的内容为n
        span.innerHTML=n;
//        计算小计
//获得td的前一个兄弟元素的内容,从?位截取,转为浮点数后,保存在变量price中
        var price=parseFloat(td.previousElementSibling.innerHTML.slice(1));
        console.log(typeof (price));
//        设置td的后一个兄弟元素的内容为"&yen;"+price*n,要求小计要按2位小数四舍五入
        var total=td.nextElementSibling.innerHTML="&yen;"+price*n.toFixed(2);
//        计算总和
//        获得id为chart下的tbody下的每个tr下的最后一个td,保存在变量tds中
        var data=document.getElementById("chart");
        console.log(data);
        var tds=data.querySelectorAll("tbody>tr>td:last-child");
        console.log(tds);
        for(var i=0,sum=0;i<tds.length;i++){
            //        遍历tds中每一个td,同时声明变量sum为0
            sum+=parseFloat(tds[i].innerHTML.slice(1));
        }//遍历结束
//        设置id为chart下的tfoot下的tr下的最后一个td的内容为:
//        "&yen;"+sum.toFixed(2);
        data.querySelector("tfoot>tr>td:last-child").innerHTML="&yen;"+sum.toFixed(2);
    }

</script>

</body>
</html>
时间: 2024-07-31 06:02:05

原生js实现购物车相关功能的相关文章

原生 JS 中对象相关 API 合集

https://juejin.im/entry/58f8a705a0bb9f0065a4cb20 原文链接:https://microzz.com/2017/04/20/jsobject/ 原生 JavaScript 中对象相关 API 合集 - 对象篇.现在 jQuery 已经没有那么有优势了,原生 JS 赶紧学起来... -- 由microzz分享 Microzz [email protected] 主页 文章 标签 GitHub 关于我 掘金专栏 SegmentFault Vue音乐播放器

原生js实现vue组件功能

在如今VUE盛行的情况下,我们一直在惊叹于VUE的组件的功能,却不知道,原生js早就已经支持了这个功能. 最近在公开课学到的,js还有很多很多需要探索学习. 下面是一个简单的例子 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>创建标签</title> </head> <body> <x-product>测试

原生JS实现购物车功能

html <div class="catbox"> <table id="cartTable"> <thead> <tr> <th><label> <input class="check-all check" type="checkbox">  全选</label></th> <th>商品</th>

原生JS中对象相关API合集

Object对象 生成实例对象 var o = new Object() 属性 Object.prototype //返回原型对象 方法 Object.keys(o) //遍历对象的可枚举属性 Object.getOwnPropertyName(o) //遍历对象不可枚举的属性 对象实例的方法 valueOf // 返回当前对象对应的值. toString // 返回当前对象对应的字符串形式. toLocaleString // 返回当前对象对应的本地字符串形式. hasOwnProperty

原生js 实现购物车价格和总价 统计

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <script> 7 window.onload=function(){ 8 var aIn=document.querySelectorAll('input'); 9 var aEm=d

关于原生JS获取类相关的代码

<script> var FungetElementsByClassName = function(str,root,tag){ if(root){ root = typeof root == "string" ? document.getElementById(root) : root; } else { root = document.body; } tag = tag || "*"; var els = root.getElementsByTagN

原生JS轻松实现倒计时功能

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>倒计时</title> <style> strong{color: #f00;padding: 0 15px;}; </style> <script type="text/javascript">

原生js实现拖拽功能

如果要设置物体拖拽,必须使用三个事件,分别是: 1.onmousedown:鼠标按下事件 2.onmousemove:鼠标移动事件 3.onmouseup:鼠标抬开事件 拖拽的原理:根据鼠标的移动来移动被拖拽的元素.鼠标的移动就是鼠标x.y坐标的变化,元素的移动就是position的top和left的变化. 当然并不是任何时候移动鼠标都要使元素移动,应该判断鼠标左键是否被按下,以及是否在可拖拽元素上按下的. 基本思路: 拖拽状态 = 0鼠标在元素上按下的时候{ 拖拽状态 = 1 记录下鼠标的x和

原生js实现简易ATM功能

简易ATM 题目描述: 里面现存100块钱. 如果存钱,就用输入的钱数加上先群的钱,然后弹出余额. 如果取钱,就减去取的钱,然后显示余额. 如果显示余额,就显示余额. 如果退出,就进行判断再退出. <script> var money = 100; var moneySum = 0; var num = parseInt(prompt('请输入你的操作:' + '\n' + '1.存钱' + '\n' + '2.取钱' + '\n' + '3.显示余额' + '\n' + '4.退出'));;