2011-11-03 194 views
0

我需要在do/while语句循环中循环javascript的帮助。Javascript do-while循环问题

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

此外,当我点击“确定”添加更多我的订单,它不会循环它,而只是显示document.write。如果您点击“确定”按钮,我想让它循环。

谢谢你的帮助。

下面是代码:

<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> 
+4

我重新标记这是[标签:JavaScript的] - Java和Javascript有一样共同作为一辆汽车和一个胡萝卜。例如, – corsiKa

+0

+1。 – denolk

回答

0

对于问题的第二部分,你必须在循环波纹管使用语句

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

我在哪里把a = confirm(“你想要下另一个订单?”);如果你想要求确认,那么我是否会做另一个如果陈述,或者我把它放在else语句 – djw32592

+0

,该陈述应该在循环中。在你的情况下,do {}语句结束之前,关闭它。 – denolk

0

看起来你是不是调理输出是否选择有效产品的结果的部分。你需要像下面这样的东西;

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) 
+0

另外,正如其他人所说的那样,用于放置另一个订单的confirm()应该发生在do-while内部,并且检查的条件会是while(a == true),因为如果它们需要再次循环选择是。 – Bryan

+0

提示:用'productValid = true;'开始你的循环,如果找不到*,则将其更改为false。这样你就不用多次写了。 –

+0

同意,但你可以在那一方面争论。我通常更喜欢我最初的方法,因为阅读代码时更有意义(产品在明确检查之前无效),但需要花费额外的代码。 – Bryan

0

如果用户点击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>