(Javascript提示应用程序)开关柜内的开关柜将无法运行

时间:2018-07-21 05:36:24

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

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

但是,我的代码似乎无法在一个开关柜中运行一个开关柜,该开关柜用于将订单添加到购物车中,还用于显示购物车的内容。

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

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

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

更清楚地说,我将在下面包含我的代码以及它的代码笔链接,并在我认为问题所在的位置进行注释。

非常感谢所有输入。

谢谢!

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

1 个答案:

答案 0 :(得分:0)

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

它是这样工作的:

  1. 开关表达式只计算一次。
  2. 将表达式的值与每种情况的值进行比较。
  3. 如果匹配,则执行相关的代码块。

因此,无论将什么作为输入传递给switch(“ YouInput”),它都会在所有情况下进行检查,因此,如果在第一个开关中将Int作为输入传递,则假设1,那么情况1:如果传递100则将执行案例100:如果没有大小写匹配的默认值,并且如果您传递String,则说“ Yosia”,那么如果存在任何案例“ Yosia”:将会执行

因此,在您的第二个切换案例中,您正在检查案例1,案例:2,但我不认为您的“ inputPesanan”类型为int类型,因为您正在使用parseIn的其他地方都没有,所以可能会打印出来并检查您的“ inputPesanan”不会是1、2或您要查找的情况。