DOM实现购物车小练习

 function c(str) {

            return document.createElement(str)

        }

        let list = [

            {

            name: '可比克',

            img: 'https://img13.360buyimg.com/n7/jfs/t1/146714/4/279/253714/5edf3844E3467d2ff/16a13dd05f2718c5.jpg',

            count: 1,

            price: 5

        },

        {

            name: '乐事',

            img: 'https://img13.360buyimg.com/n7/jfs/t1/146714/4/279/253714/5edf3844E3467d2ff/16a13dd05f2718c5.jpg',

            count: 1,

            price: 6

        },

        {

            name: '上好佳',

            img: 'https://img13.360buyimg.com/n7/jfs/t1/146714/4/279/253714/5edf3844E3467d2ff/16a13dd05f2718c5.jpg',

            count: 1,

            price: 3

        },


        ]

        let theader=['名称','图片','价格','数量','小计','操作']

        //创建表格

        let tb=c('table')

        tb.classList.add('tb')

        document.body.appendChild(tb)

        //创建表头

        let tr=c('tr')

        theader.forEach(function(item){

            let th=c('th')

            th.innerHTML=item

            tr.appendChild(th)

        })

        tb.appendChild(tr)

        //生成内容

        list.forEach(function(item){

            let tr=c('tr')

            let td=c('td')

            td.innerHTML=item.name

            tr.appendChild(td)

            let td1=c('td')

            let img=c('img')

            img.src=item.img

            tr.appendChild(td1)

            td1.appendChild(img)

            let td2=c('td')

            td2.innerHTML=item.count

            tr.appendChild(td2)

            let td3=c('td')

            td3.classList.add('counter')

            let btn1=c('button')

            btn1.innerHTML='-'

            btn1.onclick=function(){

                let val=parseInt(input.value)

                val--

                if(val<1)val=1

                input.value=val

                //更新小计

                td4.innerHTML=val*item.price

            }

            td3.appendChild(btn1)

            let input =c('input')

            input.value=item.count

            //当文本框输入时触发input事件

            input.oninput=function(e){

                //e.target代表触发本次事件的对象

                let val=e.target.value

                //不能为空

                if(!val)val=1

                //如果输入非数字,则还原1

                if(isNaN(val))val=1

                else{

                    val=parseInt(val)

                    if(val<1)val=1

                }

                //拿到过滤之后的有效值,进行计算小计

                td4.innerHTML=val*item.price

                //拿更新好的有效值,更新Input

                input.value=val

            }

            td3.appendChild(input)

            let btn2=c('button')

            btn2.innerHTML='+'

            btn2.onclick=function(){

                let val =parseInt(input.value)

                val++

                input.value=val

                //更新小计

                td4.innerHTML=val*item.price

            }

            td3.appendChild(btn2)

            tr.appendChild(td3)

            let td4=c('td')

            td4.innerHTML=item.count*item.price

            tr.appendChild(td4)

            let td5=c('td')

            td5.innerHTML='删除'

            td5.onclick=function(){

                tr.remove()

            }

            tr.appendChild(td5)

            tb.appendChild(tr)

        })



 <style>

        .tb{

            text-align: center;

            width: 800px;

            border-collapse:none ;

        }

        .tb img{

            width: 80px;

            height: 80px;

        }

        .tb th,.tb td{

            border: 1px solid #cccccc;

            padding: 10px;

        }

        .counter input{

            width: 20px;

            text-align: center;

        }

    </style>

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。