<!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>