博客列表 >实现购物车的删除与编辑功能

实现购物车的删除与编辑功能

桃儿的博客
桃儿的博客原创
2019年05月15日 12:15:072063浏览

实现购物车的删除与编辑功能

方法一:添加name属性来获取按钮


实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>实现购物车的删除与编辑功能</title>
    <style>
        /*表格与单元素添加边框*/
        table, th, td {
            border: 1px solid black;
        }
        /*设置表格样式, 折叠边框线并设置宽度*/
        table {
            border-collapse: collapse;
            width: 600px;
        }

        /*设置标题行背景*/
        table thead tr:first-of-type {
            background-color: lightblue;
        }

        /*选择每一行的第一列*/
        table tr td:first-of-type {
            text-align: center;
        }
    </style>
</head>
<body>
<table>
    <caption>购物车</caption>
    <thead>
    <tr>
        <th style="width: 30px;"><input type="checkbox" id="all"></th>
        <th>商品</th>
        <th>操作</th>
    </tr>
    </thead>


    <tbody>
    <tr>
        <td><input type="checkbox" name="user-select"></td>
        <td>华为HUAWEI MateBook 14 全面屏轻薄性能笔记本电脑</td>
        <td><button name="edit">编辑</button> <button name="del-one">删除</button></td>
    </tr>
    <tr>
        <td><input type="checkbox" name="user-select"></td>
        <td>联想(Lenovo)拯救者Y7000英特尔酷睿i5 15.6英寸游戏笔记本电脑</td>
        <td><button name="edit">编辑</button> <button name="del-one">删除</button></td>
    </tr>
    <tr>
        <td><input type="checkbox" name="user-select"></td>
        <td>小米 (MI)Ruby 2019款 15.6英寸金属轻薄笔记本电脑</td>
        <td><button name="edit">编辑</button> <button name="del-one">删除</button></td>
    </tr>
    <tr>
        <td><input type="checkbox" name="user-select"></td>
        <td>Apple Macbook Pro 13.3[带触控栏]深空灰 </td>
        <td><button name="edit">编辑</button> <button name="del-one">删除</button></td>
    </tr>
    </tbody>
</table>

<button id="del-all" disabled>全部删除</button>

<script>
    //获取全选复选框
    var all=document.getElementById('all');
    //获取全部商品列表复选框
    var checkboxes=document.getElementsByName('user-select');
    //获取全部删除按钮
    var delBtn=document.getElementById('del-all');
    // 给全选复选框, 通过input事件, 添加全选功能
    all.addEventListener('click',getAll,false);
    //全选事件触发函数
    function getAll(){
        // console.log(all.checked);
        //如果用户点击了全选
        if(all.checked===true){
            // 获取所有被选中的复选框, 并将其设置为选中状态
            Object.keys(checkboxes).forEach(function (key) {
                checkboxes[key].checked = true;
            });
            //全部删除按钮有效
            delBtn.disabled=false;
        }else{  //用户取消了全选
            // 还原所有行的复选框
            Object.keys(checkboxes).forEach(function (key) {
                checkboxes[key].checked = false;
            });
            //全选删除按钮无效
            delBtn.disabled=true;
        }
    }
    //全部删除事件
    delBtn.addEventListener('click',delAll,false);
    //全部删除事件触发函数
    function delAll() {
        if(confirm('是否全部删除?')){
            //获取tbody
            var tbody = document.getElementsByTagName('table')[0].tBodies[0];
            //将tbody内容置空即可
            tbody.innerHTML='';
            //全部删除按钮无效
            delBtn.disabled=true;
            //全选按钮还原
            all.checked=false;
        }
        //可选操作,给用户一个提示
        var p=document.createElement('p');
        p.style.color='red';
        p.innerText='购物车啥也没有了咋办?赶紧再加些喜欢的东西进来吧!';
        document.body.appendChild(p);
    }

    //获取单个的删除按钮
    var delOne=document.getElementsByName('del-one');
    //给单个删除按钮添加点击事件
    Object.keys(delOne).forEach(function (key) {
        delOne[key].addEventListener('click',del,false);
    });
    //单个删除事件触发函数
    function del() {
        // console.log('删除一条');
        if(confirm('是否删除该信息?')){
            this.parentNode.parentElement.innerHTML='';
        }
        // 三元运算符
        // return confirm('是否删除该信息?')?this.parentNode.parentElement.innerHTML='':false;
    }
    //获取单个编辑按钮
    var edits=document.getElementsByName('edit');
    //给单个编辑按钮添加事件
    Object.keys(edits).forEach(function (key) {
        edits[key].addEventListener('click',edit,false);
    });
    //单个编辑事件触发函数
    function edit() {
        var td=this.parentElement.previousElementSibling;
        var oldText=td.innerText;
        var newText=prompt('是否编辑该信息?',oldText);
        if(newText !==null && newText !==''){
            td.innerText=newText;
        }else if(newText===''){
            var fText=prompt('请重新输入!');
            td.innerText=fText;
        }else{
            //为null时
            return false;
        }
    }


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

运行实例 »

点击 "运行实例" 按钮查看在线实例


方法二:直接在按钮中添加onclick点击事件

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>给购物车添加删除与编辑功能</title>
    <style>
        /*表格与单元素添加边框*/
 table, th, td {
            border: 1px solid black;
        }
        /*设置表格样式, 折叠边框线并设置宽度*/
 table {
            border-collapse: collapse;
            width: 600px;
        }

        /*设置标题行背景*/
 table thead tr:first-of-type {
            background-color: lightblue;
        }

        /*选择每一行的第一列*/
 table tr td:first-of-type {
            text-align: center;
        }
    </style>
</head>
<body>
<table>
    <caption>购物车</caption>
    <thead>
        <tr>
            <th style="width: 30px;"><input type="checkbox" id="all"></th>
            <th>商品</th>
            <th>操作</th>
        </tr>
    </thead>


    <tbody>
        <tr>
            <td><input type="checkbox" name="user-select"></td>
            <td>华为HUAWEI MateBook 14 全面屏轻薄性能笔记本电脑</td>
            <td><button onclick="edit(this)">编辑</button>&nbsp;<button onclick="del(this)">删除</button></td>
        </tr>
        <tr>
            <td><input type="checkbox" name="user-select"></td>
            <td>联想(Lenovo)拯救者Y7000英特尔酷睿i5 15.6英寸游戏笔记本电脑</td>
            <td><button onclick="edit(this)">编辑</button>&nbsp;<button onclick="del(this)">删除</button></td>
        </tr>
        <tr>
            <td><input type="checkbox" name="user-select"></td>
            <td>小米 (MI)Ruby 2019款 15.6英寸金属轻薄笔记本电脑</td>
            <td><button onclick="edit(this)">编辑</button>&nbsp;<button onclick="del(this)">删除</button></td>
        </tr>
        <tr>
            <td><input type="checkbox" name="user-select"></td>
            <td>Apple Macbook Pro 13.3[带触控栏]深空灰 </td>
            <td><button onclick="edit(this)">编辑</button>&nbsp;<button onclick="del(this)">删除</button></td>
        </tr>
    </tbody>
</table>

<button id="del-all" disabled>全部删除</button>

<script>
    // 获取元素
 // 全选复选框
 var all = document.getElementById('all');
    // 全部商品列表复选框
 var checkboxes = document.getElementsByName('user-select');
    // 全部删除按钮
 var delBtn = document.getElementById('del-all');

    // 给全选复选框, 通过input事件, 添加全选功能
 all.addEventListener('input', getAll, false);

    // 全选事件的触发函数
 function getAll() {
        // 测试
 console.log(all.checked);

        // 如果用户点击了全选
 if (all.checked === true) {
            // 获取所有被选中的复选框, 并将其设置为选中状态
 Object.keys(checkboxes).forEach(function (key) {
                checkboxes[key].checked = true;
            });
            // 全部删除按钮有效
 delBtn.disabled = false;

        } else {    // 用户取消了全选
 // 还原所有行的复选框
 Object.keys(checkboxes).forEach(function (key) {
                checkboxes[key].checked = false;
            });
            // 全部删除按钮无效
 delBtn.disabled = true;
        }
    }

    // 全部删除事件
 delBtn.addEventListener('click', delAll, false);

    // 全部删除事件触发函数
 function delAll() {
        if (confirm('是否全部删除?')) {
            // 获取tbody
 var tbody = document.getElementsByTagName('table')[0].tBodies[0];
            // 将tbody 内容置空却可
 tbody.innerHTML = '';
            // 全部删除按钮无效
 delBtn.disabled = true;
            // 全选按钮还原
 all.checked = false;

            // 可选操作, 给用户一个提示,让用户再添加一些商品到购物车,增加成交率
 var p = document.createElement('p');
            p.style.color = 'red';
            p.innerText = '购物车啥也木有了, 赶紧添加一些吧!';
            document.body.appendChild(p);
        }

    }

    // 作业: 逐个删除功能, 如何添加与测试?

 var tbody = document.getElementsByTagName('table')[0].tBodies[0];

    // 删除操作
 function del(ele) {
        if (confirm('是否删除?')) {
            // ele.parentElement: <td>
            // ele.parentElement.parentElement: <tr>
 tbody.removeChild(ele.parentElement.parentElement);
        }
    }

    // 编辑操作
 function edit(ele) {
        // 要编辑的内容位于当前按钮的父元素的前一个兄弟元素
 var td = ele.parentElement.previousElementSibling;
        // 获取原始的内容
 var oldContent = td.innerHTML;
        // 设置编辑对话框, 确定会返回第二个参数值的内容, 取消会返回null
 var newContent = prompt('请输入要更新的内容', oldContent);
        //console.log(newContent); // 测试
 // 如果返回值不等于null, 说明用户点击了确定按钮
 if (newContent !== null) {
            // 更新内容
 td.innerHTML = newContent;
        } else {
            // 如果返回 null, 什么也不做,返回
 return false;
        }
    }

</script>


</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议