¿Puede alguien ayudarme a entender por qué mi caso de interruptor devuelve el valor predeterminado? Incluso cuando cambio todos los valores, solo devuelve el valor predeterminado al principio. Pensé que era un problema de elevación en mi código, pero después de depurarlo, descubrí que es la declaración, ignora todos los demás casos. (PD, por favor, no seas malo, solo quiero entender, los otros ejemplos que he visto no se explican simplemente y no tienen muchos votos positivos, así que lo intenté).
var shippingMethod = document.querySelector("[name=r_method]:checked").value; var shippingChoice; switch(shippingMethod) { case "usps": shippingChoice = 2; break; case "ups": shippingChoice = 3; break; default: shippingChoice = 0; break; } console.log(shippingChoice);
Sugeriría agregar una declaración if para verificar que haya un valor para shippingMethod. Además, al consultar el valor, asegúrese de incluir comillas ("") alrededor del valor del nombre.
var shippingMethod = "default"; var shippingChoice; if (document.querySelector('[name="r_method"]:checked') != null) { shippingMethod = document.querySelector('[name="r_method"]:checked').value; } switch(shippingMethod) { case "usps": shippingChoice = 2; break; case "ups": shippingChoice = 3; break; default: shippingChoice = 0; break; } console.log(shippingChoice);