基于ES6与面向对象思想的原生JS火锅点餐系统实现

作者:拾光

时间:2026-10-23

浏览:288

本文介绍如何使用ES6标准结合面向对象思想,利用原生JavaScript开发一个火锅点餐小程序。项目包含HTML结构、Bootstrap样式及多个JS模块,涵盖菜单类定义、数据初始化及增删操作逻辑,旨在展示前端基础开发流程。

文章目录

项目概述与环境配置

本项目基于ES6标准进行开发,建议读者先掌握ES6基础语法后再行阅读。

开发环境要求:需使用ES6标准编写代码;因引用了Bootstrap在线资源,运行环境必须保持网络连接;建议使用VSCode作为编辑器,并在本地服务器环境下打开项目文件。

代码文件结构说明

核心代码文件结构如下:

项目概述与环境配置

主要涉及四个文件:Demo.html(主页面)、Demo.css(样式表)、Test01.js(菜单数据类定义)以及Test02.js(菜单循环渲染逻辑)和Test03.js(增删功能实现)。

接下来对各部分代码进行详细解析:

HTML页面结构

首先是Demo.html页面结构:


<!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 href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" rel="stylesheet">
  <link rel="stylesheet" href="Demo.css" rel="external nofollow" >
  <script type="text/javascript" src="Test03.js"></script>
</head>
<body>
  <div class="container">
    <div class="row">
      <div class="col-md-6">
        <table id='table1' class="table table-bordered table-striped">
          <tr>
            <td>名称</td>
            <td>价格</td>
            <td>图片</td>
            <td>操作</td>
          </tr>
          <tbody id = 'tbody'></tbody>
        </table>
      </div>
      <div class="col-md-6">
        <table id='table2' class="table table-bordered" style="background-color:burlywood;">
          <tr>
            <td>名称</td>
            <td>价格</td>
            <td>数量</td>
            <td>操作</td>
          </tr>
          <tbody id="tbody1"></tbody>
        </table>
      </div>
    </div>
  </div>
  <script type="module">
    import {db_foot} from './Test02.js';
    let contents = [];
    window.onload = function(){
      for(const foots of db_foot()){
        contents.push(`
          <tr>
            <td>${foots.name}</td>
            <td>${foots.price}</td>
            <td>${foots.pic}</td>
            <td><button value="${foots.name}" money="${foots.price}" class="btn btn-sm btn-info" οnclick="sss(this)">加入菜单</button></td>
          </tr>
        `);
        document.getElementById('tbody').innerHTML = contents.join("");
      };
    };
  </script>
 
</body>
</html>

CSS样式定义

其次是Demo.css样式文件:


*{margin: 0;padding: 0;}
tr,td{
  text-align:center;
  line-height: 20px;
}
td{
  vertical-align: middle;
}

菜单类定义

Test01.js定义了基础的菜单类:


export default class Person{
  constructor(name,price,pic){
    this.name = name;
    this.price = price;
    this.pic = pic;
  }
}

菜单数据初始化

Test02.js负责菜单数据的初始化与循环展示:


import Person from './Test01.js';
 
export function db_foot(){
  let foots = new Array();
  foots.push(new Person('鱼香肉丝',100,''));
  foots.push(new Person('宫保鸡丁',200,''));
  foots.push(new Person('菠萝吹雪',300,''));
  return foots;
}

增删操作逻辑

Test03.js实现了具体的添加与删除操作逻辑:


let contents = [];
function sss(e){
  var flag = true;
  var zhi = e.getAttribute("value");
  var num = e.getAttribute("money");
  var arr_tr =document.getElementById("table2").getElementsByTagName("tr");
  let i;
  for(i=0 ; i<arr_tr.length ; i++){
    var td = arr_tr[i].firstElementChild.innerHTML;
    //重复点菜,修改数量和金钱
    if(td == zhi){
      flag = false;
      //个数
      var count = arr_tr[i].firstElementChild.nextElementSibling.nextElementSibling;
      var sum = count.innerHTML = parseFloat(count.innerHTML) + 1; 
      //金钱数
      var qian = arr_tr[i].firstElementChild.nextElementSibling.innerHTML = sum * num; 
      break;
    }
  }
  if(flag){
    let tbody1 = document.getElementById("tbody1");
    var tr = document.createElement("tr");
    //名称
    var td1 = document.createElement("td");
    td1.innerHTML = `${zhi}`;
    //价钱
    var td2 = document.createElement("td");
    td2.innerHTML = `${num}`;
    //数量
    var td3 = document.createElement("td");
    td3.innerHTML = `1`;
    //操作
    var td4 = document.createElement("td");
    td4.innerHTML = `<button class="btn btn-sm btn-warning" οnclick='shanchu(this)'>删除</button>`;
    //插入
    tr.appendChild(td1);
    tr.appendChild(td2);
    tr.appendChild(td3);
    tr.appendChild(td4);
    tbody1.appendChild(tr);
  }
}
//删除
function shanchu(obj){
  obj.parentNode.parentNode.parentNode.removeChild(obj.parentNode.parentNode);
}

总结

总结

以上介绍了基于原生JS和面向对象思想实现的火锅点餐小程序示例。希望该案例能对读者有所帮助,如有任何疑问欢迎留言交流。感谢支持。如需转载,请注明出处。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章