【问题标题】:(Javascript prompt app ) switchcase inside switchcase will not run(Javascript提示应用程序)switchcase里面的switchcase不会运行
【发布时间】:2018-12-29 09:23:42
【问题描述】:

我正在制作一个显示为提示和警报的应用程序(idk 怎么称呼它)。

但是,我的代码似乎无法在我用来将订单添加到购物车并用于显示购物车内容的 switchcase 内运行 switchcase。

另一种表达我的问题的方式:

  1. 我无法将商品添加到购物车

  2. 我无法访问我的购物车(提示会自行关闭)

为了更清楚,我将在下面包含我的代码以及它的 codepen 链接,我会评论我认为问题所在。

非常感谢所有输入。

谢谢!

arrayCart =[];
totalBill = parseInt(0);
cartContent = arrayCart.length;

for(;;)
    {
        userInput = parseInt(prompt('1. Menu\n2. Your Cart\n3. Payment\n4. Exit'))
        switch(userInput)
        {
            // This is to go to Menu
            case 1:
                inputPesanan = prompt('Silahkan pilih menu yang diinginkan:\n1. Paket Bento A\n2. Paket Bento B\n3. Paket Bento C')


// I think the 1st problem starts here
                switch(inputPesanan)
                { 
                case 1:
                arrayCart.push('Paket Bento A - Rp20.000\n');
                totalBill += parseInt(20000);
                break;

                case 2:
                arrayCart.push('Paket Bento B - Rp25.000\n');
                totalBill += parseInt(25000);
                break;

                case 3:
                arrayCart.push('Paket Bento C - Rp30.000\n');
                totalBill += parseInt(30000);
                break;
            }
            break;
            // and the 1st problem ends here

        // This is to check the Cart's content
        case 2:
            // And I think the 2nd problem starts here
            inputKeranjang = alert('Isi Keranjang Anda\n' + arrayCart + '\n\n' + 'Total Tagihan Anda: \n' + totalBIll)   
            break;
            // and it ends here

//----------- everything under this line seems to be working fine ---------------------------------------

        // This is to input how much money you would like to pay with and calculate the change or deficit (if any)
        case 3:    
            inputPayment = parseInt(prompt('Total Tagihan Anda :\nRp' + totalBill + '\n\nBerapa uang yang Anda akan bayarkan?'));
            switch(true)
            {
                case inputPayment<totalBill:
                alert('Uang Anda kurang sebesar Rp ' + parseInt(totalBill-inputPayment));
                break;

                case inputPayment>totalBill:
                alert('Anda akan mendapat kembalian sebesar Rp' + parseInt(inputPayment-totalBill));
                break;

                case inputPayment=totalBill:
                alert('Uang Anda pas');
                break;
            }
            break;
    }

    // This is to end the infinite loop and close the app
    if(userInput === 4)
    {
    break;
    }
}

【问题讨论】:

  • Switch(true) 将不起作用,输入Payment> 总帐单也不起作用。大小写仅适用于常量
  • 我已将我的程序更改为使用 if else 语句并且它有效!非常感谢!

标签: javascript html arrays switch-statement infinite-loop


【解决方案1】:

我不是 javascript 开发人员,但就 switch 语句而言,

这就是它的工作原理:

  1. switch 表达式只计算一次。
  2. 将表达式的值与每个案例的值进行比较。
  3. 如果匹配,则执行关联的代码块。

所以无论你作为输入传递给开关(“YouInput”)它在所有情况下都会检查,所以如果你在第一个开关中传递 Int 作为你的输入,假设 1 然后 case 1: 如果你传递 100 将执行案例100:如果没有案例匹配默认将,如果你通过字符串让说“Yosia”,那么如果有任何案例“Yosia”:那将执行

因此,在您的第二个切换案例中,您正在检查案例 1: ,案例:2 但我认为您的“inputPesanan”不是 int 类型,因为在其他任何地方您都在使用一些 parseIn 但不存在所以可能会打印并检查您的“inputPesanan”,它不会是 1、2 或您正在寻找的案例。

【讨论】:

  • 我已将我的程序更改为使用 if else 语句并且它有效!非常感谢!!
猜你喜欢
  • 2022-12-29
  • 1970-01-01
  • 1970-01-01
  • 2017-02-04
  • 1970-01-01
  • 2023-03-15
  • 2023-03-03
  • 2023-03-17
  • 2013-06-03
相关资源
最近更新 更多