用javascript写一个点菜程序

时间: 2023-09-19 13:11:45 浏览: 34
好的,以下是一个简单的点餐程序的实现示例,使用了HTML、CSS和JavaScript: HTML代码: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>点餐程序</title> <link rel="stylesheet" href="style.css"> </head> <body> <h1>点餐程序</h1> <div id="menu"> <h2>菜单</h2> <ul> <li><span class="name">鱼香肉丝</span><span class="price">10元</span><button class="add" data-name="鱼香肉丝" data-price="10">加入购物车</button></li> <li><span class="name">宫保鸡丁</span><span class="price">12元</span><button class="add" data-name="宫保鸡丁" data-price="12">加入购物车</button></li> <li><span class="name">番茄炒蛋</span><span class="price">8元</span><button class="add" data-name="番茄炒蛋" data-price="8">加入购物车</button></li> </ul> </div> <div id="cart"> <h2>购物车</h2> <ul></ul> <p>总价:<span id="totalPrice">0元</span></p> <button id="submit">提交订单</button> </div> <script src="script.js"></script> </body> </html> ``` CSS代码: ```css h1 { text-align: center; } #menu, #cart { float: left; width: 50%; padding: 20px; box-sizing: border-box; } ul { list-style: none; padding: 0; margin: 0; } li { margin-bottom: 10px; } .name { display: inline-block; width: 160px; } .price { display: inline-block; width: 60px; text-align: right; } button.add { float: right; } #cart ul { border: 1px solid #ccc; padding: 10px; } #cart p { text-align: right; margin-top: 10px; } #submit { float: right; } ``` JavaScript代码: ```javascript // 定义菜单数据 var menu = [ {name: '鱼香肉丝', price: 10}, {name: '宫保鸡丁', price: 12}, {name: '番茄炒蛋', price: 8} ]; // 获取菜单和购物车元素 var menuElem = document.getElementById('menu'); var cartElem = document.getElementById('cart'); var cartListElem = cartElem.querySelector('ul'); var totalPriceElem = cartElem.querySelector('#totalPrice'); var submitElem = cartElem.querySelector('#submit'); // 初始化菜单 menu.forEach(function(item) { var liElem = document.createElement('li'); var nameElem = document.createElement('span'); var priceElem = document.createElement('span'); var addElem = document.createElement('button'); nameElem.className = 'name'; priceElem.className = 'price'; addElem.className = 'add'; nameElem.textContent = item.name; priceElem.textContent = item.price + '元'; addElem.textContent = '加入购物车'; addElem.setAttribute('data-name', item.name); addElem.setAttribute('data-price', item.price); liElem.appendChild(nameElem); liElem.appendChild(priceElem); liElem.appendChild(addElem); menuElem.querySelector('ul').appendChild(liElem); }); // 初始化购物车 var cart = {}; submitElem.addEventListener('click', function() { if (Object.keys(cart).length === 0) { alert('购物车为空!'); return; } var message = '订单详情:\n'; var totalPrice = 0; for (var name in cart) { var price = cart[name]; message += name + ' x ' + price + '\n'; totalPrice += price * getPriceByName(name); } message += '总价:' + totalPrice + '元\n'; message += '确认提交订单?'; if (confirm(message)) { alert('订单提交成功!'); cart = {}; cartListElem.innerHTML = ''; totalPriceElem.textContent = '0元'; } }); function getPriceByName(name) { for (var i = 0; i < menu.length; i++) { if (menu[i].name === name) { return menu[i].price; } } return 0; } menuElem.addEventListener('click', function(event) { if (event.target.className === 'add') { var name = event.target.getAttribute('data-name'); var price = parseInt(event.target.getAttribute('data-price')); if (cart[name]) { cart[name]++; } else { cart[name] = 1; } var liElem = document.createElement('li'); liElem.textContent = name + ' x ' + cart[name]; cartListElem.appendChild(liElem); totalPriceElem.textContent = getTotalPrice() + '元'; } }); function getTotalPrice() { var totalPrice = 0; for (var name in cart) { totalPrice += cart[name] * getPriceByName(name); } return totalPrice; } ``` 这个程序实现了点餐、加入购物车、提交订单等功能。当用户点击加入购物车按钮时,会将对应菜品加入购物车,并在购物车界面显示订单信息。当用户提交订单时,会弹出确认框,确认提交后会显示提交成功提示,并清空购物车界面。

相关推荐

最新推荐

recommend-type

用html5的canvas和JavaScript创建一个绘图程序的简单实例

下面小编就为大家带来一篇用html5的canvas和JavaScript创建一个绘图程序的简单实例。小编觉得挺不错的, 现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
recommend-type

JavaScript实现x秒后自动跳转到一个页面

在网上搜了一下,关于这个技术处理有多种方法,我只记下我在视频里学到的三种: 1、用一个response.sendRedirect(“目标页面.jsp\.htm”);实现直接跳转; 2、有时我们需要有点提示,比如“x秒后自动跳转,若没有跳转...
recommend-type

javascript实现一个网页加载进度loading

loading随处可见,比如一个app经常会有下拉刷新,上拉加载的功能,在刷新和加载的过程中为了让用户感知到 load 的过程,我们会使用一些过渡动画来表达。最常见的比如“转圈圈”,“省略号”等等。 网页loading有很多...
recommend-type

JavaScript使用push方法添加一个元素到数组末尾用法实例

主要介绍了JavaScript使用push方法添加一个元素到数组末尾,实例分析了javascript中push函数的使用技巧,需要的朋友可以参考下
recommend-type

200行HTML+JavaScript实现年会抽奖程序

本文实例为大家分享了js实现年会抽奖程序的具体代码,供大家参考,具体内容如下 需求分析 1.多轮抽奖,每轮只有3个环节:展示奖品...搞桌面程序第一时间就想到了这几个框架:Java Swing、Python Tkinter、C++ Qt、C# WP
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

解释minorization-maximization (MM) algorithm,并给出matlab代码编写的例子

Minorization-maximization (MM) algorithm是一种常用的优化算法,用于求解非凸问题或含有约束的优化问题。该算法的基本思想是通过构造一个凸下界函数来逼近原问题,然后通过求解凸下界函数的最优解来逼近原问题的最优解。具体步骤如下: 1. 初始化参数 $\theta_0$,设 $k=0$; 2. 构造一个凸下界函数 $Q(\theta|\theta_k)$,使其满足 $Q(\theta_k|\theta_k)=f(\theta_k)$; 3. 求解 $Q(\theta|\theta_k)$ 的最优值 $\theta_{k+1}=\arg\min_\theta Q(
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。