题解 | #购物车#

购物车

http://www.nowcoder.com/practice/3b4a342351ce483e813e5588446fc1f8

add()

function add(items) {
    //items [{name, price}]
    //1.获取父节点
    var tbody = document.getElementsByTagName('tbody')[0]
    var tfoot = document.getElementsByTagName('tfoot')[0]
    //2.获取初始数据
    var num = tbody.children.length
    var total = parseFloat(tfoot.innerText.match(/\d+.\d+/)[0])
    // var total = tfoot.innerText.match(/^.*\t(\d*\.?\d*)\(.*\)$/)[1]
    //3.创建子节点
    //产品行
    var tr = ""
    for (let i in items){
            total = parseFloat((total+items[i].price).toFixed(2))
            tr += `
                    ${items[i].name}
                    ${items[i].price.toFixed(2)}
                    <a href="javascript:void(0);">删除</a>
                   `
            num++
    }
    //总计行
    var tf = `总计${total.toFixed(2)}(${num}件商品)`
    //4.将新增的添加进去
    tfoot.innerHTML = tf
    tbody.innerHTML = tbody.innerHTML+tr 
 }

bind()

正则表达式:/^.\t(\d*.?\d)\t.*$/

console.log(event.target.parentElement.parentElement.innerText.match(/^.*\t(\d*\.?\d*)\t.*$/));
//[0:"产品1\t10.00\t删除", 1:"10.00", index: 0, input: "产品\t10.00\t删除", groups: undefined]
function bind() {
    //1.获取父节点
    var tbody = document.getElementsByTagName('tbody')[0]
    var tfoot = document.getElementsByTagName('tfoot')[0]
    //2.添加点击事件
    tbody.addEventListener('click',(event)=>{
      var num = tbody.children.length
      if(event.target.tagName == 'A'){
        //获取数据
        var price = event.target.parentElement.parentElement.innerText.match(/^.*\t(\d*\.?\d*)\t.*$/)[1]
        var total = parseFloat(tfoot.innerText.match(/\d+.\d+/)[0])
        //修改数据
        total = parseFloat((total-price).toFixed(2))
        var tf = `总计${total.toFixed(2)}(${num-1}件商品)`
        tfoot.innerHTML = tf
        //删除节点
        event.target.parentElement.parentElement.remove()
      }
    })
}
//启动bind()监听
bind()
全部评论
bind()的第十行var price = event.target.parentElement.parentElement.innerText.match(/^.*\t(\d*\.?\d*)\t.*$/)[1] 正则手滑写错了?
点赞 回复 分享
发布于 2021-09-08 20:54
提交不成功啊这代码,我写的代码我测了都正常,提交也不成功,郁闷
点赞 回复 分享
发布于 2021-10-19 15:03
add函数中 tr += ` ${items[i].name} ${items[i].price.toFixed(2)} ` 每一行应该加''吧?
点赞 回复 分享
发布于 2022-04-07 10:53
不是每次都四舍五入保留两位小数,而是最终结果,这答案有瑕疵
点赞 回复 分享
发布于 2023-01-23 21:14 江苏

相关推荐

吃不饱的肱二头肌很想退休:tnnd 我以为选妹子呢,亏我兴高采烈的冲进来😠
投递快手等公司10个岗位
点赞 评论 收藏
分享
4 1 评论
分享
牛客网
牛客企业服务