2017-10-18 121 views
0

我刚刚开始学习JavaScript和HTML,目前我正在为一个项目开发比萨交付程序。在该人员下达命令(将其输入到表单并单击命令按钮)之后,它会输出到文本区域中。Textarea不想清除(点击按钮时)

如果有人订购了其他东西(再次点击订单按钮),文本区域应该被清除,但它不会清除。我尝试了很多我在SO和W3School上发现的东西,但它不想清除文本区域。

代码以空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

你试图用来清除textarea的代码在哪里?我们无法帮助您解决我们看不到的问题!此外,它会帮助您创建一个[最小,完整和可验证的示例](https://stackoverflow.com/help/mcve),并在[可运行的代码片段]中使用* relevalt *代码(https:/ /stackoverflow.blog/2014/09/16/introducing-runnable-javascript-css-and-html-code-snippets/) – FluffyKitten

+0

您已突出显示清除textarea的行。现在看看其他行设置textarea的值并仔细检查这些值。顺便说一句,不断地拒绝用户的电话号码,而不告诉他们你期望的格式是非常烦人的。 – nnnnnn

+0

我已注意到您的意见@nnnnnn,并感谢您的帮助和建议! – Stefan

回答

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; 
 

 
     } 
 

 
    }
<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>

为CustomerDetails应在每次函数调用时初始化。

试试吧!

+2

这有什么不同?我们是否应该一行一行地与OP的代码进行比较,以查看您所做的更改?请[编辑]你的回答,以解释问题是什么以及你如何修复它。 – nnnnnn

+0

this line:'orderDetails = customerDetails +'\ n'+'Total Cost:$'+ TotalPrice;' –

+0

再次,您的答案在答案中明确表达,而不仅仅是在评论中。但是,改变*那条线意味着比萨饼的细节不被输出,所以这不是OP想要的。 – nnnnnn

2

看来问题在于你在方法外定义了orderDetails。您需要每次清除变量或将其范围在本地范围内,或者您只需附加到该变量。

只需将全局范围的变量声明移动到方法定义中即可。

+0

非常感谢你,先生,它的作品!你是个天才! – Stefan

+0

很高兴帮助,如果它的工作,请不要忘记标记答案为接受。 –

+0

如何将其标记为已接受? – Stefan

0

您不清除orderDetails。

orderDetails=""; 

功能启动“orderPizzas”使用上面的代码。

+0

我编辑了我的问题,我尝试'初始化'textarea的值,否则输出将是正确的,同时在输出顶部还有'undefined'。 – Stefan