zoukankan      html  css  js  c++  java
  • vue购物车案列

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>Document</title>
      <link rel="stylesheet" href="./style.css">
    </head>
    <body>
      <div id="payFor">
        <div v-if="this.books.length">
      <table>
        <thead>
          <tr>
            <th></th>
            <th>书籍名称</th>
            <th>出版日期</th>
            <th>价格</th>
            <th>购买数量</th>
            <th>操作</th>
          </tr>
        </thead>
        <tbody>
          <tr v-for="(items,index) in books">
            <td>{{items.id}}</td>
            <td>{{items.name}}</td>
            <td>{{items.date}}</td>
            <td>{{items.price|showPrice}}</td>
            <td>
              <button @click="decreme(index)">-</button>
              {{items.count}}
              <button @click="increme(index)">+</button>
            </td>
            <td><button @click="removeHandle">移除</button></td>
          </tr>
        </tbody>
      </table> 
     <h2>总价格:{{totalPrice|showPrice}}</h2>
    </div>
    <h2 v-else>购物车为空</h2>
      </div>
      <script src="./../../vue.min.js"></script>
      <script src="./main.js"></script>
    </body>
    </html>
    new Vue({
    el:"#payFor",
    data:{
      books:[
        {
          id:1,
          name:"算法单轮",
          date:"2006-9",
          price:66,
          count:1
        },
        {
          id:2,
          name:"通常讷河",
          date:"2006-10",
          price:67,
          count:1
        },
        {
          id:3,
          name:"立卡DMD",
          date:"2006-1",
          price:61,
          count:1
        },
        {
          id:4,
          name:"撒大声地",
          date:"2006-5",
          price:66,
          count:1
        }
      ]
    },
    methods:{
      // getPrice(price){
      // return "$"+price.toFixed(2)
      // },
      increme(index){
        this.books[index].count++
      return this.count
      },
      decreme(index){
        if(this.books[index].count>1){
          this.books[index].count--
        }
      return this.count
      },
      removeHandle(index){
        this.books.splice(index,1);
      }
    },
    filters:{
      showPrice(price){
        return "$"+price.toFixed(2) //过滤器
      }
    },
    computed:{
      totalPrice(){
        //普通的for循环
        // let totalPrice=0
        // for(let i=0;i<this.books.length;i++){
        // totalPrice +=this.books[i].price*this.books[i].count
        // }
        // return totalPrice
        //高级的for循环
        //let totalPrice=0
      //   for(let i in this.books){
      //     totalPrice +=this.books[i].price*this.books[i].count
      //   }
      //   return totalPrice
      // }
      //更高级的
      let totalPrice=0
      for(let items of this.books){
        totalPrice+=items.price*items.count
      }
      return totalPrice 
    }
    }
    })

    css

     table{ border: 1px solid #e9e9e9; border-spacing: 0; border-collapse: collapse; } th,td{ padding: 8px 16px; border: 1px solid #e9e9e9; } th{ background: #f7f7f7; color: #5c6b77; font-weight: 600; } 

    效果图

  • 相关阅读:
    水调歌头·1024
    网页开发方式-从静态页面到服务端渲染
    完美融合 nextjs 和 antd
    commanderJs编写命令行工具(cli)
    [信息安全] 05 X.509 公钥证书的格式标准
    [Cake] 3. dotnet 本地工具 cake & dotnet format
    [计算机网络] 00 概述
    [Cake] 2. dotnet 全局工具 cake
    [解读REST] 0.REST 相关参考资料
    [OIDC in Action] 3. 基于OIDC(OpenID Connect)的SSO(添加Github OAuth 2.0的支持)
  • 原文地址:https://www.cnblogs.com/wxy0715/p/12442421.html
Copyright © 2011-2022 走看看