<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <style>
        /* 填写样式 */
        body,html{
            padding: 0;
            margin: 0;
            font-size: 14px;
            color: #000000;
        }
        table{
            border-collapse: collapse;
            width: 100%;
            table-layout: fixed;
        }
        thead{
            background: #3d444c;
            color: #ffffff;
        }
        td,th{
            border: 1px solid #e1e1e1;
            padding: 0;
            height: 30px;
            line-height: 30px;
            text-align: center;
        }
    </style>
</head>

<body>
<!-- 填写标签 -->
<table id="jsTrolley">
    <thead><tr><th>名称</th><th>价格</th><th>操作</th></tr></thead>
    <tbody>
    <tr><td>产品1</td><td>10.00</td><td><a href="javascript:void(0);">删除</a></td></tr>
    <tr><td>产品2</td><td>30.20</td><td><a href="javascript:void(0);">删除</a></td></tr>
    <tr><td>产品3</td><td>20.50</td><td><a href="javascript:void(0);">删除</a></td></tr>
    </tbody>
    <tfoot><tr><th>总计</th><td colspan="2">60.70(3件商品)</td></tr></tfoot>
</table>
<script type="text/javascript">
    // 填写JavaScript
    function add(items) {
        let tb = document.querySelector('tbody');
        let tf = document.querySelector('tfoot').querySelector('td');
        let p = parseFloat(tf.innerText.substring(0, tf.innerText.indexOf('(')));
        for(let it of items){
            p += it.price
            let tr = document.createElement('tr');
            tr.innerHTML = `<td>${it.name}</td><td>${it.price.toFixed(2)}</td><td><a href="javascript:void(0);">删除</a></td>`
            tb.appendChild(tr);
        }
        tf.innerText = `${p.toFixed(2)}(${tb.childElementCount}件商品)`
    }
    function bind() {
        let tb = document.querySelector('tbody');
        tb.addEventListener('click', function (event) {
            if(event.target.tagName === 'A') {
                let tr = event.target.parentElement.parentElement;
                let tf = document.querySelector('tfoot').querySelector('td');
                let price = parseFloat(event.target.parentElement.previousElementSibling.innerText);
                let p = parseFloat(tf.innerText.substring(0, tf.innerText.indexOf('(')))
                tb.removeChild(tr);
                tf.innerText = `${(p - price).toFixed(2)}(${tb.childElementCount}件商品)`
            }
        })
    }
    bind()

    function f() {
        clear();
        var items = [{name: '1', price: 1.11}];
        add(items);
        var result = checkSame(items);
        result = result && checkTotal();
        return result;

        function checkSame(items) {
            var table = document.getElementById('jsTrolley');
            var tbody = table.getElementsByTagName('tbody')[0];
            var tr = [].slice.call(tbody.getElementsByTagName('tr'), 0);
            var result = true;
            tr.forEach(function (tr, index) {
                var td = [].slice.call(tr.getElementsByTagName('td'), 0);
                result = result && td[0].innerHTML.trim() === items[index].name && td[1].innerHTML.trim() === items[index].price.toFixed(2) && td[2].innerHTML.trim() === '<a href="javascript:void(0);">删除</a>';
            });
            return result;
        }

        function checkTotal() {
            var table = document.getElementById('jsTrolley');
            var tbody = table.getElementsByTagName('tbody')[0];
            var tfoot = table.getElementsByTagName('tfoot')[0];
            var tr = [].slice.call(tbody.getElementsByTagName('tr'), 0);
            var total = 0;
            tr.forEach(function (tr) {
                total += +(tr.getElementsByTagName('td')[1].innerHTML.trim());
            });
            var content = tfoot.getElementsByTagName('td')[0].innerHTML.trim();
            var result = content === total.toFixed(2) + '(' + tr.length + '件商品)';
            return result;
        }

        function clear() {
            document.body.innerHTML = '<table id="jsTrolley"><thead><tr><th>名称</th><th>价格</th><th>操作</th></tr></thead><tbody></tbody><tfoot><tr><th>总计</th><td colspan="2">0(0件商品)</td></tr></tfoot></table>';
        }
    }
    console.log(f())
</script>
</body>

</html>