Qual o erro neste algoritmo

Devo criar em switch case um programa que a partir de um menu, o usuário ao colocar um número correspondente a comida escolhida, apareça uma janela informando qual a comida escolhida. Eis o código fonte:

<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
function final(){
var A =document.form.A.value;
 document.form.A.value = A ;
 switch(A){
 	case 1:
 	alert("Você escolheu arroz");break;
 	case 2:
 	alert("Você escolheu feijão");break;
 	case 3:
 	alert("Você escolheu carne assada");break;
 	case 4:
 	alert("Você escolheu bife a milanesa");break;
 	case 5:
 	alert("Você escolheu frango xadrez");break;
    default
    alert("jbdjs");
 }
}
</script>
</head>
<body>
<p>Menu:<br>
1-arroz<br>
2-feijão<br>
3-carne assada<br>
4-bife a milanesa<br>
4-frango xadrez</p>
<form method="post" name="form" action="Q8.html">
Digite o número correspondente a comida escolhida :<input type=number name="A">
<br>
<input type="button" onclick="final()" value="Após digitar os números, clique aqui">
</form>
</body>
</html>

Para pegar o valor do input utilize:
var A = document.getElementById("numero").value;

O input precisará de um Id, neste caso é “numero”:
<input type="number" id="numero">

Apesar de ser um input “number”, o valor obtido será do tipo string.
Você pode utilizar o switch com o valor do tipo string, para isso bastaria deixar assim:

switch (A) {
            case "1":
                alert("Você escolheu arroz");
                break;
            case "2":
                alert("Você escolheu feijão");
                break;
            case "3":
                alert("Você escolheu carne assada");
                break;
            case "4":
                alert("Você escolheu bife a milanesa");
                break;
            case "5":
                alert("Você escolheu frango xadrez");
                break;
            default:
                alert("Número inválido, digite um dos números do menu.");
        }

Note que os números estão entres aspas.

Mas o aconselhável é transformar o tipo da variável de “string” para “number”:
var A = parseInt(document.getElementById("numero").value);

Lembre de retirar as aspas duplas no “switch”.

Haviam alguns outros erros, fiz algumas modificações e o código completo está abaixo:

<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>

<body>
    <h2>Menu:</h2>
    <ol>
        <li>Arroz</li>
        <li>Feijão</li>
        <li>Carne Assada</li>
        <li>Bife a Milanesa</li>
        <li>Frango Xadrez</li>
    </ol>
    <form>
        <label for="numero">Digite o número correspondente a comida escolhida:</label> <br>
        <input type="number" id="numero">  <br> <br>
        <input type="button" onclick="escolheu()" value="Após digitar os números, clique aqui">
    </form>

    <script>
    function escolheu() {
        var A = parseInt(document.getElementById("numero").value);
        // alert(typeof(A));
        switch (A) {
            case 1:
                alert("Você escolheu arroz");
                break;
            case 2:
                alert("Você escolheu feijão");
                break;
            case 3:
                alert("Você escolheu carne assada");
                break;
            case 4:
                alert("Você escolheu bife a milanesa");
                break;
            case 5:
                alert("Você escolheu frango xadrez");
                break;
            default:
                alert("Número inválido, digite um dos números do menu.");
        }
    }
    </script>
</body>

</html>

Até mais. :grin:

1 curtida