我刚刚开始学习JavaScript和HTML,我目前正在为项目制作比萨饼送货计划。在此人发出订单(将其输入表单并单击订单按钮)后,它将输出到文本区域。
如果有人订购了其他内容(再次单击订单按钮),则应清除文本区域,但不清除。我在SO和W3Schools上尝试过很多东西,但它不想清除文本区域。
清空textarea的代码:(几乎在顶部的 orderPizzas函数中) textarea 位于的底部<body>
内的 ID:详细信息
document.getElementById("Details").value = "";
这是我的代码:
var pizzaCount = 0;
var gourmetPrice = 15.50;
var standardPrice = 9.50;
var deliveryCharge = 5;
var TotalPrice;
var name;
var adress;
var phoneNumber = 10;
var gourmetCount = 0;
var standardCount = 0;
var orderDetails = '';
function orderPizzas() {
var customerDetails;
var i = 0;
var j = 0;
TotalPrice = 0;
phoneNumber = '';
document.getElementById("Details").value = "";
var arrStandardPizza = new Array()
arrStandardPizza[0] = new Array();
arrStandardPizza[0]['name'] = 'Hawaiian';
arrStandardPizza[0]['amount'] = Number(document.standard.Hawaiian.value);
arrStandardPizza[1] = new Array();
arrStandardPizza[1]['name'] = 'Cheese';
arrStandardPizza[1]['amount'] = Number(document.standard.Cheese.value);
arrStandardPizza[2] = new Array();
arrStandardPizza[2]['name'] = 'Veggie';
arrStandardPizza[2]['amount'] = Number(document.standard.Veggie.value);
arrStandardPizza[3] = new Array();
arrStandardPizza[3]['name'] = 'Supreme';
arrStandardPizza[3]['amount'] = Number(document.standard.Supreme.value);
arrStandardPizza[4] = new Array();
arrStandardPizza[4]['name'] = 'Pepperoni';
arrStandardPizza[4]['amount'] = Number(document.standard.Pepperoni.value);
var arrGourmetPizza = new Array()
arrGourmetPizza[0] = new Array();
arrGourmetPizza[0]['name'] = 'Meatlovers';
arrGourmetPizza[0]['amount'] = Number(document.gourmet.Meatlovers.value);
arrGourmetPizza[1] = new Array();
arrGourmetPizza[1]['name'] = 'Chicken';
arrGourmetPizza[1]['amount'] = Number(document.gourmet.Chicken.value);
arrGourmetPizza[2] = new Array();
arrGourmetPizza[2]['name'] = 'Prawn';
arrGourmetPizza[2]['amount'] = Number(document.gourmet.Prawn.value);
standardCount = arrStandardPizza[0]['amount'] + arrStandardPizza[1]['amount'] + arrStandardPizza[2]['amount'] + arrStandardPizza[3]['amount'] + arrStandardPizza[4]['amount'];
gourmetCount = arrGourmetPizza[0]['amount'] + arrGourmetPizza[1]['amount'] + arrGourmetPizza[2]['amount'];
pizzaCount = standardCount + gourmetCount;
if (pizzaCount > 12) {
alert('A maximum of 12 pizzas can be ordered.\nPlease modify your order.\nPizzas ordered: ' + pizzaCount);
} else {
while (i < 5) {
if (arrStandardPizza[i]['amount'] > 0) {
orderDetails = orderDetails + '\n' + arrStandardPizza[i]['name'] + ': ' + arrStandardPizza[i]['amount'];
}
i++;
}
while (j < 3) {
if (arrGourmetPizza[j]['amount'] > 0) {
orderDetails = orderDetails + '\n' + arrGourmetPizza[j]['name'] + ': ' + arrGourmetPizza[j]['amount'];
}
j++;
}
if (document.getOrderMethod.method.value == 'Delivery') {
name = prompt('What is your name?');
adress = prompt('What is your adress?');
while (phoneNumber.toString().length !== 10) {
phoneNumber = prompt('What is your phone number?');
}
customerDetails = '\nDelivery:\n' + 'Name: ' + name + ' ' + '\n' + 'Adress: ' + adress + '\n' + 'Phone Number: ' + phoneNumber;
TotalPrice = deliveryCharge;
} else {
name = prompt('What is your name?');
customerDetails = '\nPick-up:\n' + 'Customer Name: ' + name;
}
TotalPrice = TotalPrice + (standardCount * standardPrice) + (gourmetCount * gourmetPrice);
orderDetails = orderDetails + customerDetails + '\n' + 'Total Cost: $' + TotalPrice;
document.getElementById("Details").value = orderDetails;
}
}
<!DOCTYPE html>
<html>
<head>
<title> Pete's Pizza </title>
</head>
<body>
<h1> Welcome to Pete's Pizzas, where the best pizzas are! </h1>
<h3> Enter your pizza order: </h3>
<label> Amount for each standard pizza </label>
<form name="standard">
<input type="text" name="Hawaiian"> Hawaiian Pizza <br>
<input type="text" name="Cheese"> Cheese Pizza <br>
<input type="text" name="Veggie"> Veggie Pizza <br>
<input type="text" name="Supreme"> Supreme Pizza <br>
<input type="text" name="Pepperoni"> Pepperoni Pizza <br>
</form>
<label> Amount for each gourmet pizza </label>
<form name="gourmet">
<input type="text" name="Meatlovers"> Meat-lovers Pizza <br>
<input type="text" name="Chicken"> Chicken Pizza <br>
<input type="text" name="Prawn"> Prawn <br>
</form>
<form name="getOrderMethod">
<input type="radio" name="method" value="Delivery" checked> Delivery <br>
<input type="radio" name="method" value="Pick-up"> Pick-up <br>
</form>
<input type="button" value="Confirm Order" onClick="orderPizzas()">
<input type="button" value="Cancel Order" onClick="window.location.reload()">
<textarea id="Details" value="" rows="9" cols="33" wrap=on readonly></textarea>
</body>
</html>
我是JavaScript和HTML的新手,所有建议都会受到好评。提前谢谢。
答案 0 :(得分:3)
问题似乎是因为您在方法之外定义了orderDetails
。您需要每次清除变量或在本地范围内进行调整,或者只是继续添加变量。
将变量声明从全局范围移动到方法定义中,它应该可以工作。
答案 1 :(得分:0)
var pizzaCount = 0;
var gourmetPrice = 15.50;
var standardPrice = 9.50;
var deliveryCharge = 5;
var TotalPrice;
var name;
var adress;
var phoneNumber = 10;
var gourmetCount = 0;
var standardCount = 0;
function orderPizzas() {
var customerDetails;
var orderDetails = '';
var i = 0;
var j = 0;
TotalPrice = 0;
phoneNumber = '';
document.getElementById("Details").value = "";
var arrStandardPizza = new Array()
arrStandardPizza[0] = new Array();
arrStandardPizza[0]['name'] = 'Hawaiian';
arrStandardPizza[0]['amount'] = Number(document.standard.Hawaiian.value);
arrStandardPizza[1] = new Array();
arrStandardPizza[1]['name'] = 'Cheese';
arrStandardPizza[1]['amount'] = Number(document.standard.Cheese.value);
arrStandardPizza[2] = new Array();
arrStandardPizza[2]['name'] = 'Veggie';
arrStandardPizza[2]['amount'] = Number(document.standard.Veggie.value);
arrStandardPizza[3] = new Array();
arrStandardPizza[3]['name'] = 'Supreme';
arrStandardPizza[3]['amount'] = Number(document.standard.Supreme.value);
arrStandardPizza[4] = new Array();
arrStandardPizza[4]['name'] = 'Pepperoni';
arrStandardPizza[4]['amount'] = Number(document.standard.Pepperoni.value);
var arrGourmetPizza = new Array()
arrGourmetPizza[0] = new Array();
arrGourmetPizza[0]['name'] = 'Meatlovers';
arrGourmetPizza[0]['amount'] = Number(document.gourmet.Meatlovers.value);
arrGourmetPizza[1] = new Array();
arrGourmetPizza[1]['name'] = 'Chicken';
arrGourmetPizza[1]['amount'] = Number(document.gourmet.Chicken.value);
arrGourmetPizza[2] = new Array();
arrGourmetPizza[2]['name'] = 'Prawn';
arrGourmetPizza[2]['amount'] = Number(document.gourmet.Prawn.value);
standardCount = arrStandardPizza[0]['amount'] + arrStandardPizza[1]['amount'] + arrStandardPizza[2]['amount'] + arrStandardPizza[3]['amount'] + arrStandardPizza[4]['amount'];
gourmetCount = arrGourmetPizza[0]['amount'] + arrGourmetPizza[1]['amount'] + arrGourmetPizza[2]['amount'];
pizzaCount = standardCount + gourmetCount;
if (pizzaCount > 12) {
alert('A maximum of 12 pizzas can be ordered.\nPlease modify your order.\nPizzas ordered: ' + pizzaCount);
}
else {
while(i < 5) {
if ( arrStandardPizza[i]['amount'] > 0) {
orderDetails = orderDetails + '\n' + arrStandardPizza[i]['name'] + ': ' + arrStandardPizza[i]['amount'];
}
i++;
}
while(j < 3) {
if ( arrGourmetPizza[j]['amount'] > 0) {
orderDetails = orderDetails + '\n' + arrGourmetPizza[j]['name'] + ': ' + arrGourmetPizza[j]['amount'];
}
j++;
}
if (document.getOrderMethod.method.value == 'Delivery') {
name = prompt('What is your name?');
adress = prompt('What is your adress?');
while( phoneNumber.toString().length !== 10) {
phoneNumber = prompt('What is your phone number?');
}
customerDetails = '\nDelivery:\n' + 'Name: ' + name + ' ' + '\n' + 'Adress: ' + adress + '\n' + 'Phone Number: ' + phoneNumber;
TotalPrice = deliveryCharge;
}
else {
name = prompt('What is your name?');
customerDetails = '\nPick-up:\n' + 'Customer Name: ' + name;
}
TotalPrice = TotalPrice + (standardCount * standardPrice) + (gourmetCount * gourmetPrice);
orderDetails = orderDetails + customerDetails + '\n' + 'Total Cost: $' + TotalPrice;
document.getElementById("Details").value = orderDetails;
}
}
&#13;
<h1> Welcome to Pete's Pizzas, where the best pizzas are! </h1>
<h3> Enter your pizza order: </h3>
<label> Amount for each standard pizza </label>
<form name ="standard">
<input type="text" name="Hawaiian" > Hawaiian Pizza <br>
<input type="text" name="Cheese" > Cheese Pizza <br>
<input type="text" name="Veggie" > Veggie Pizza <br>
<input type="text" name="Supreme" > Supreme Pizza <br>
<input type="text" name="Pepperoni" > Pepperoni Pizza <br>
</form>
<label> Amount for each gourmet pizza </label>
<form name ="gourmet">
<input type="text" name="Meatlovers" > Meat-lovers Pizza <br>
<input type="text" name="Chicken" > Chicken Pizza <br>
<input type="text" name="Prawn" > Prawn <br>
</form>
<form name="getOrderMethod">
<input type="radio" name="method" value="Delivery" checked> Delivery <br>
<input type="radio" name="method" value="Pick-up"> Pick-up <br>
</form>
<input type="button" value="Confirm Order" onClick="orderPizzas()" >
<input type="button" value="Cancel Order" onClick="window.location.reload()" >
<textarea id="Details" value="" rows="9" cols="33" wrap=on readonly>
</textarea>
&#13;
每次调用函数时都应初始化CustomerDetails。
试试吧!
答案 2 :(得分:0)
您没有清除orderDetails。
orderDetails="";
在函数“orderPizzas”的开头使用上面的代码。