用JS实现商品添加、删除和修改

简介: 用JS实现商品添加、删除和修改

html:

<table border="1" cellspacing="0" cellpadding="20">
      <thead>
        <tr>
          <th>名称</th>
          <th>价格</th>
          <th>数量</th>
          <th>操作</th>
        </tr>
      </thead>
      <tbody id="tbody"></tbody>
      <tfoot>
        <tr>
          <th></th>
          <th id="priceAll">总价:¥0</th>
          <th id="numAll">总数:0</th>
          <th></th>
        </tr>
      </tfoot>
    </table>
    <button onclick="isShow()">添加商品</button>
    <div style="display: none;" id="tool">
      <input type="text" id="name" placeholder="请输入商品名称">
      <input type="text" id="price" placeholder="请输入商品价格">
      <input type="text" id="num" placeholder="请输入商品数量">
      <button onclick="isConfig()">确定</button>
      <button onclick="isClose()">取消</button>
    </div>

js:

<script>
      // 初始数据
      let data = [{
        name: "商品一",
        price: 33.00,
        num: 3
      }, {
        name: "商品二",
        price: 66.00,
        num: 0
      }, {
        name: "商品三",
        price: 99.00,
        num: 0
      }, ]
      let priceAll = 0;
      let numAll = 0;
      let index = -1;
      // 执行渲染
      renders()
      // 创建渲染函数
      function renders() {
        let str = "";
        for (let i = 0; i < data.length; i++) {
          str += `
          <tr>
            <td>${data[i].name}</td>
            <td>¥${data[i].price}</td>
            <td>
              <button onclick="sub(${i})" style="display:${data[i].num == 0 ? 'none' : 'inline-block'};">-</button>
              <span>${data[i].num}</span>
              <button onclick="add(${i})">+</button>
            </td>
            <td>
              <button onclick="edit(${i})">编辑</button>
              <button onclick="del(${i})">删除</button>
            </td>
          </tr>
          `;
        }
        document.getElementById("tbody").innerHTML = str;
        counts();
      }
      // 数量添加功能
      function add(i) {
        data[i].num++;
        renders();
      }
      // 数量减少功能
      function sub(i){
        data[i].num--;
        renders();
      }
      // 计算总价数量
      function counts(){
        priceAll = 0;
        numAll = 0;
        for (let i = 0; i < data.length; i++) {
          priceAll += parseFloat(data[i].num) * parseFloat(data[i].price);
          numAll += parseFloat(data[i].num);
        }
        document.getElementById("priceAll").innerHTML = '总价:¥' + priceAll;
        document.getElementById("numAll").innerHTML = '总数:' + numAll;
      }
      // 商品删除功能
      function del(i){
        // 数组.splice(从哪删,删几个,添加的值)
        data.splice(i,1);
        renders();
      }
      // 添加商品显示
      function isShow(){
        index = -1;
        document.getElementById("tool").style.display = "block";
      }
      // 确定添加/编辑
      function isConfig(){
          let name = document.getElementById("name").value;
          let price = document.getElementById("price").value;
          let num = document.getElementById("num").value;
          if( name != '' && price != "" && num !=""){
            if(index > -1){
              data.splice(index,1,{ name, price, num });
            }else{
              data.push({ name, price, num });
            }
            isClose();
            renders();
          }else{
            alert("请完善商品信息")
          }
        }
      // 取消事件
      function isClose(){
        index = -1;
        document.getElementById("name").value = "";
        document.getElementById("price").value = "";
        document.getElementById("num").value = "";
        document.getElementById("tool").style.display = "none";
      }
      // 编辑回显
      function edit(i){
        index = i;
        document.getElementById("tool").style.display = "block";
        document.getElementById("name").value = data[i].name;
        document.getElementById("price").value = data[i].price;
        document.getElementById("num").value = data[i].num  ;
        console.log(data[i]);
      }
    </script>
相关文章
|
6月前
|
JavaScript
|
6月前
|
前端开发 JavaScript
js + ajax实现商品列表页到详情页的跳转
js + ajax实现商品列表页到详情页的跳转
|
算法 JavaScript
(最简易版本2)js笛卡尔积生成商品SKU多规格算法
首先这篇文章得仔细看,上面是我出的第一版本多规格算法可以去看一下思路
388 0
(最简易版本2)js笛卡尔积生成商品SKU多规格算法
|
1月前
|
JavaScript
js学习--商品列表商品详情
js学习--商品列表商品详情
17 2
|
5月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的商品推荐系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的商品推荐系统附带文章源码部署视频讲解等
41 0
基于springboot+vue.js+uniapp小程序的商品推荐系统附带文章源码部署视频讲解等
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的二手商品网站附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的二手商品网站附带文章源码部署视频讲解等
20 0
|
5月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的超市库存商品管理系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的超市库存商品管理系统附带文章和源代码部署视频讲解等
48 4
|
6月前
|
JavaScript Java 测试技术
基于ssm+vue.js的会员制度管理的商品营销系统附带文章和源代码设计说明文档ppt
基于ssm+vue.js的会员制度管理的商品营销系统附带文章和源代码设计说明文档ppt
44 1
|
5月前
|
JavaScript 前端开发
杨老师课堂之JavaScript定时器限时抢购秒杀商品案例
杨老师课堂之JavaScript定时器限时抢购秒杀商品案例
54 0
|
5月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的网上商品订单转手系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的网上商品订单转手系统附带文章源码部署视频讲解等
44 0