Javascript do-while循环问题

Javascript do-while looping problems

本文关键字:问题 循环 do-while Javascript      更新时间:2023-09-26

我需要帮助在do/while语句循环中循环javascript。

我遇到的问题是,当输入无效产品时,我不想在表中显示不正确的信息,但它确实显示在document.write中。我需要帮助,以确保不正确的信息不会被显示。

同样,当我点击"ok"添加更多订单时,它不会循环它,而只是显示document.write。我想让它在你点击"ok"按钮时循环。

谢谢你的帮助。

代码如下:

 <html>
    <head><title>Javascript Assignment 3: Daniel Weiner</title>
      </head>
    <body bgcolor="brown">
    <h1 align="center">Big Ben's Burgers-eCommerce</h1> 
    <table border="1" width="100%" height="450px" bgcolor="gray"><tr>
      <th align="center">Product/Service</th>
      <th align="center">Price</th>
      <th align="center">Discount</th>
    </tr>
    <tr bgcolor="orange">
      <td align="center"><font size="3">Hamburger 
    <br>
    <br>
    <a href="http://www.mcdonalds.com/us/en/food/product_nutrition.sandwiches.256.Hamburger.html" target="_blank">Classic Hamburger</a>
      <td align="right" bgcolor="orange"><font size="3">$8.00</font></td>
      <td align="center" bgcolor="orange"><font size="3">.10</font></td>
    </tr>
    <tr bgcolor="orange">
      <td align="center"><font size="3">Cheeseburger
    <br>
    <br>
    <a href="http://www.mcdonalds.com/us/en/food/product_nutrition.sandwiches.284.cheeseburger.html" target="_blank">Classic Cheeseburger  </a>
    </font></td>
      <td align="right" bgcolor="orange"><font size="3">$9.00</font></td>
      <td align="center" bgcolor="orange"><font size="3">.05</font></td>
    </tr>
    <tr bgcolor="orange">
      <td align="center"><font size="3">Soda
    <br>
    <br>
    <a href="http://www.mcdonalds.com/us/en/food/full_menu/beverages.html" target="_blank">Fabulous Drinks</a>
    </font></td>
      <td align="right" bgcolor="orange"><font size="3">$2.00
    </font></td>
    <td align="center" bgcolor="orange"><font size="3"> .07</font></td>
    </tr>
    <tr bgcolor="red">
      <td align="center"><font size="3"> French Fries
    <br>
    <br>
    <a href="http://www.mcdonalds.com/us/en/food/product_nutrition.snackssides.120.small-french-fries.html" target="_blank"> Fries</a>
    </font></td>
      <td align="right" bgcolor="red"><font size="3"> $4.00</font></td>
      <td align="center" bgcolor="red"><font size="3">.15</font></td>
    </table>
    <script type="text/javascript">
    /*Daniel Weiner, Fengpeng Yuan, Javascript 2, Nov 4,2011*/
    var username;
    var bprice= 8;
    var chprice= 9;
    var sprice= 2;
    var fprice= 4;
    var price= 0;
    var a;
    var b;
    var product= "hamburger, cheeseburger, soda, fries";
    var quantity =0;
    var total;
    var cost = 0;
    var discount= 0;
    do{
    username =prompt("Welcome to Big Ben's Burgers. Please enter your name.", "");
    alert("Hello " + username+". Please look through our available products and services before placing your order.","");
    product=prompt("What do you want?","");
    quantity =1*prompt("How many of " +product+ " would you like?");


    if (product == "hamburger")
    {   
    price = bprice; 
    discount = .1;
    }
    else if (product == "cheeseburger")
    {   
    price = chprice;
    discount = .05;
    }
    else if (product == "soda")
    {   
    price = sprice;
    discount = .07;
    }
    else if (product == "fries")
    {   
    price = fprice;
    discount = .15;
    }   
    else{
        alert("Sorry, " +username+  " Your item not found.");
    }
        cost=price*quantity
        discount=price*discount*quantity
        total=cost-discount
    document.write("The cost of buying " +quantity+ " of " +product+ " is $" +cost+ ".<br/>");
    document.write("This discount for this purchase is $" +discount+ ".<br/>");
    }while(a==false)
    a = confirm("Do you want to place another order?");
    (b==false)
    document.write("Thank you for placing an order with us, " +username+ ".<br/>");
    document.write("The total order cost is $" +total+ ".");
    </script>
    </body>
    </html>

对于问题的第二部分,你必须使用下面的循环语句

 a = confirm("Do you want to place another order?");

如果用户点击cancel,则重新迭代循环。将while(a==false)更改为while(a==true)或直接更改为while(a)

还要加上

一行
a = confirm("Do you want to place another order?");

作为循环中的最后一行,而不是后面的行。

你可以设置一个标志变量,让你知道项目是否被找到,并在循环结束时检查它,以避免显示不存在的项目的数据:

<script type="text/javascript">
    /*Daniel Weiner, Fengpeng Yuan, Javascript 2, Nov 4,2011*/
    var username;
    var bprice= 8;
    var chprice= 9;
    var sprice= 2;
    var fprice= 4;
    var price= 0;
    var a;
    var b;
    var product= "hamburger, cheeseburger, soda, fries";
    var quantity =0;
    var total;
    var cost = 0;
    var discount= 0;
    var flag;
    do{
    flag = true;  //assume found unless otherwise
    username =prompt("Welcome to Big Ben's Burgers. Please enter your name.", "");
    alert("Hello " + username+". Please look through our available products and services before placing your order.","");
    product=prompt("What do you want?","");
    quantity =1*prompt("How many of " +product+ " would you like?");
    if (product == "hamburger")
    {   
    price = bprice; 
    discount = .1;
    }
    else if (product == "cheeseburger")
    {   
    price = chprice;
    discount = .05;
    }
    else if (product == "soda")
    {   
    price = sprice;
    discount = .07;
    }
    else if (product == "fries")
    {   
    price = fprice;
    discount = .15;
    }   
    else{
        alert("Sorry, " +username+  " Your item not found.");
        flag = false;
    }
    if(flag){
        cost=price*quantity
        discount=price*discount*quantity
        total=cost-discount
        document.write("The cost of buying " +quantity+ " of " +product+ " is $" +cost+ ".<br/>");
        document.write("This discount for this purchase is $" +discount+ ".<br/>");
    }
    a = confirm("Do you want to place another order?");
    }while(a);
    alert('goodbye');
    </script>

看起来您没有根据是否选择了有效产品来调节输出结果的部分。您需要像下面这样的内容;

do{
    ....
    productValid = false;
    if (product == "hamburger")
    {   
    price = bprice; 
    discount = .1;
    productValid = true;
    }
    else if (product == "cheeseburger")
    {   
    price = chprice;
    discount = .05;
productValid = true;
    }
    else if (product == "soda")
    {   
    price = sprice;
    discount = .07;
productValid = true;
    }
    else if (product == "fries")
    {   
    price = fprice;
    discount = .15;
productValid = true;
    }   
    else{
        alert("Sorry, " +username+  " Your item not found.");
    }
if(productValid){
        cost=price*quantity
        discount=price*discount*quantity
        total=cost-discount
    document.write("The cost of buying " +quantity+ " of " +product+ " is $" +cost+ ".<br/>");
    document.write("This discount for this purchase is $" +discount+ ".<br/>");
}
else
{
    document.write("No valid product selected<br>");
}
 a = confirm("Do you want to place another order?");
    }while(a==true)