购物车

107 阅读1分钟

未封装版本

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <table id="tbl">
        <thead></thead>
        <tbody>
            <tr>
                <td>iphone6</td>
                <td>4488</td>
                <td>
                    <button>-</button>
                    <span>1</span>
                    <button>+</button>
                </td>
                <td>4488</td>
            </tr>
            <tr>
                <td>iphone7</td>
                <td>5488</td>
                <td>
                    <button>-</button>
                    <span>1</span>
                    <button>+</button>
                </td>
                <td>5488</td>
            </tr>
            <tr>
                <td>iphone8</td>
                <td>6488</td>
                <td>
                    <button>-</button>
                    <span>1</span>
                    <button>+</button>
                </td>
                <td>6488</td>
            </tr>
            <tr>
                <td>iphone9</td>
                <td>7488</td>
                <td>
                    <button>-</button>
                    <span>1</span>
                    <button>+</button>
                </td>
                <td>7488</td>
            </tr>
            <tr>
                <td>iphoneX</td>
                <td>8488</td>
                <td>
                    <button>-</button>
                    <span>1</span>
                    <button>+</button>
                </td>
                <td>8488</td>
            </tr>
            <tr>
                <td>RTX3090</td>
                <td>20000</td>
                <td>
                    <button>-</button>
                    <span>1</span>
                    <button>+</button>
                </td>
                <td>20000</td>
            </tr>
        </tbody>
        <tfoot>
            <tr>
                <td colspan="3">总计:</td>
                <td id="total">0</td>
            </tr>
        </tfoot>
    </table>

    <script>
        var btns=document.getElementsByTagName("button");
        for(var i=0;i<btns.length;i++){
            btns[i].onclick=function(){
                if(this.innerHTML=="+"){
                    var span=this.previousElementSibling;
                    var spanV=parseInt(span.innerHTML)+1;

                    if(spanV>0){
                        span.innerHTML=spanV;
                        var price=this.parentNode.previousElementSibling.innerHTML;
                        this.parentNode.nextElementSibling.innerHTML=price*spanV;
                    }
                }else{
                    var span=this.nextElementSibling;
                    var spanV=parseInt(span.innerHTML)-1;

                    if(spanV>0){
                        span.innerHTML=spanV;
                        var price=this.parentNode.previousElementSibling.innerHTML;
                        this.parentNode.nextElementSibling.innerHTML=price*spanV;
                    }
                }
                var tbody=document.getElementsByTagName("tbody")[0];
                var trs=tbody.children;
                for(var i=0,sum=0;i<trs.length;i++){
                    sum+=parseInt(trs[i].lastElementChild.innerHTML);
                }
                total.innerHTML=sum;

            }
        }
        var tbody=document.getElementsByTagName("tbody")[0];
        var trs=tbody.children;
        for(var i=0,sum=0;i<trs.length;i++){
            sum+=parseInt(trs[i].lastElementChild.innerHTML);
        }
        total.innerHTML=sum;
    </script>
</body>
</html>

封装版本

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <table id="tbl">
        <thead></thead>
        <tbody>
            <tr>
                <td>iphone6</td>
                <td>4488</td>
                <td>
                    <button>-</button>
                    <span>1</span>
                    <button>+</button>
                </td>
                <td>4488</td>
            </tr>
            <tr>
                <td>iphone7</td>
                <td>5488</td>
                <td>
                    <button>-</button>
                    <span>1</span>
                    <button>+</button>
                </td>
                <td>5488</td>
            </tr>
            <tr>
                <td>iphone8</td>
                <td>6488</td>
                <td>
                    <button>-</button>
                    <span>1</span>
                    <button>+</button>
                </td>
                <td>6488</td>
            </tr>
            <tr>
                <td>iphone9</td>
                <td>7488</td>
                <td>
                    <button>-</button>
                    <span>1</span>
                    <button>+</button>
                </td>
                <td>7488</td>
            </tr>
            <tr>
                <td>iphoneX</td>
                <td>8488</td>
                <td>
                    <button>-</button>
                    <span>1</span>
                    <button>+</button>
                </td>
                <td>8488</td>
            </tr>
            <tr>
                <td>RTX3090</td>
                <td>20000</td>
                <td>
                    <button>-</button>
                    <span>1</span>
                    <button>+</button>
                </td>
                <td>20000</td>
            </tr>
        </tbody>
        <tfoot>
            <tr>
                <td colspan="3">总计:</td>
                <td id="total">0</td>
            </tr>
        </tfoot>
    </table>

    <script>
        var btns=document.getElementsByTagName("button");
        for(var i=0;i<btns.length;i++){
            btns[i].onclick=function(){
                if(this.innerHTML=="+"){
                    calPrice(1,this)
                    
                }else{
                    calPrice(-1,this)

                }
                calcSum();

            }
        }
        calcSum();


        function calPrice(num,btn){
            if(num==1){
                var span=btn.previousElementSibling;
            }else{
                var span=btn.nextElementSibling;
            }
            var spanV=parseInt(span.innerHTML)+num;

            if(spanV>0){
                span.innerHTML=spanV;
                var price=btn.parentNode.previousElementSibling.innerHTML;
                btn.parentNode.nextElementSibling.innerHTML=price*spanV;
            }
        }
        
        function calcSum(){
            var tbody=document.getElementsByTagName("tbody")[0];
            var trs=tbody.children;
            for(var i=0,sum=0;i<trs.length;i++){
                sum+=parseInt(trs[i].lastElementChild.innerHTML);
            }
            total.innerHTML=sum;
        }
    </script>
</body>
</html>

面向对象版购物车

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <table>
        <thead></thead>
        <tbody>
            <tr>
                <td>iphone6</td>
                <td>4488</td>
                <td>
                    <button>-</button>
                    <span>1</span>
                    <button>+</button>
                </td>
                <td>4488</td>
            </tr>
            <tr>
                <td>iphone7</td>
                <td>5488</td>
                <td>
                    <button>-</button>
                    <span>1</span>
                    <button>+</button>
                </td>
                <td>5488</td>
            </tr>
            <tr>
                <td>iphone8</td>
                <td>6488</td>
                <td>
                    <button>-</button>
                    <span>1</span>
                    <button>+</button>
                </td>
                <td>6488</td>
            </tr>
            <tr>
                <td>iphone9</td>
                <td>7488</td>
                <td>
                    <button>-</button>
                    <span>1</span>
                    <button>+</button>
                </td>
                <td>7488</td>
            </tr>
            <tr>
                <td>iphoneX</td>
                <td>8488</td>
                <td>
                    <button>-</button>
                    <span>1</span>
                    <button>+</button>
                </td>
                <td>8488</td>
            </tr>
            <tr>
                <td>RTX3090</td>
                <td>20000</td>
                <td>
                    <button>-</button>
                    <span>1</span>
                    <button>+</button>
                </td>
                <td>20000</td>
            </tr>
        </tbody>
        <tfoot>
            <tr>
                <td colspan="3">总计:</td>
                <td id="total">0</td>
            </tr>
        </tfoot>
    </table>
    <table>
        <thead></thead>
        <tbody>
            <tr>
                <td>iphone6</td>
                <td>4488</td>
                <td>
                    <button>-</button>
                    <span>1</span>
                    <button>+</button>
                </td>
                <td>4488</td>
            </tr>
            <tr>
                <td>iphone7</td>
                <td>5488</td>
                <td>
                    <button>-</button>
                    <span>1</span>
                    <button>+</button>
                </td>
                <td>5488</td>
            </tr>
            <tr>
                <td>iphone8</td>
                <td>6488</td>
                <td>
                    <button>-</button>
                    <span>1</span>
                    <button>+</button>
                </td>
                <td>6488</td>
            </tr>
            <tr>
                <td>iphone9</td>
                <td>7488</td>
                <td>
                    <button>-</button>
                    <span>1</span>
                    <button>+</button>
                </td>
                <td>7488</td>
            </tr>
            <tr>
                <td>iphoneX</td>
                <td>8488</td>
                <td>
                    <button>-</button>
                    <span>1</span>
                    <button>+</button>
                </td>
                <td>8488</td>
            </tr>
            <tr>
                <td>RTX3090</td>
                <td>20000</td>
                <td>
                    <button>-</button>
                    <span>1</span>
                    <button>+</button>
                </td>
                <td>20000</td>
            </tr>
        </tbody>
        <tfoot>
            <tr>
                <td colspan="3">总计:</td>
                <td id="total">0</td>
            </tr>
        </tfoot>
    </table>
    <table>
        <thead></thead>
        <tbody>
            <tr>
                <td>iphone6</td>
                <td>4488</td>
                <td>
                    <button>-</button>
                    <span>1</span>
                    <button>+</button>
                </td>
                <td>4488</td>
            </tr>
            <tr>
                <td>iphone7</td>
                <td>5488</td>
                <td>
                    <button>-</button>
                    <span>1</span>
                    <button>+</button>
                </td>
                <td>5488</td>
            </tr>
            <tr>
                <td>iphone8</td>
                <td>6488</td>
                <td>
                    <button>-</button>
                    <span>1</span>
                    <button>+</button>
                </td>
                <td>6488</td>
            </tr>
            <tr>
                <td>iphone9</td>
                <td>7488</td>
                <td>
                    <button>-</button>
                    <span>1</span>
                    <button>+</button>
                </td>
                <td>7488</td>
            </tr>
            <tr>
                <td>iphoneX</td>
                <td>8488</td>
                <td>
                    <button>-</button>
                    <span>1</span>
                    <button>+</button>
                </td>
                <td>8488</td>
            </tr>
            <tr>
                <td>RTX3090</td>
                <td>20000</td>
                <td>
                    <button>-</button>
                    <span>1</span>
                    <button>+</button>
                </td>
                <td>20000</td>
            </tr>
        </tbody>
        <tfoot>
            <tr>
                <td colspan="3">总计:</td>
                <td id="total">0</td>
            </tr>
        </tfoot>
    </table>

    <script>
        function shop(parent){
            this.parent=parent;
            this.btns=parent.getElementsByTagName("button");
            this.span;
            this.spanV;
            this.price;
            this.tbody=parent.getElementsByTagName("tbody")[0];
            this.trs=this.tbody.children;
            this.tfoot=parent.getElementsByTagName("tfoot")[0];
            this.total=this.tfoot.children[0].lastElementChild;
        }
        shop.prototype.init=function(){
            this.bind();
            this.calcSum();
        }
        shop.prototype.bind=function(){
            var me=this;
            for(var i=0;i<this.btns.length;i++){
                this.btns[i].onclick=function(){
                    if(this.innerHTML=="+"){
                        me.calePrice(1,this);
                    }else{
                        me.calePrice(-1,this);
                    }
                }
            }
        }
        shop.prototype.calePrice=function(num,btn){
            this.findspan(num,btn);
            this.btnstyle(btn);
            this.calcSum();
        }
        shop.prototype.findspan=function(num,btn){
            if(num==1){
                this.span=btn.previousElementSibling;
            }else{
                this.span=btn.nextElementSibling;
            }
            this.spanV=parseInt(this.span.innerHTML)+num;
        }
        shop.prototype.btnstyle=function(btn){
            if(this.spanV>0){
                this.span.innerHTML=this.spanV;
                this.price=btn.parentNode.previousElementSibling.innerHTML;
                btn.parentNode.nextElementSibling.innerHTML=this.price*this.spanV;
            }
        }
        shop.prototype.calcSum=function(){
            for(var i=0,sum=0;i<this.trs.length;i++){
                sum+=parseInt(this.trs[i].lastElementChild.innerHTML);
            }
            this.total.innerHTML=sum;
        }

        var tab=document.getElementsByTagName("table");

        var shop1=new shop(tab[0]);
        shop1.init();

        var shop2=new shop(tab[1]);
        shop2.init();

        var shop3=new shop(tab[2]);
        shop3.init();

    </script>
</body>
</html>