用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;
}
```
这个程序实现了点餐、加入购物车、提交订单等功能。当用户点击加入购物车按钮时,会将对应菜品加入购物车,并在购物车界面显示订单信息。当用户提交订单时,会弹出确认框,确认提交后会显示提交成功提示,并清空购物车界面。