我正在做一个使用循环和函数的购物模拟器。当用户通过promt设置一个数量时,这个函数得到验证,并给我一个数字。我想使用返回来计算与购买的产品数量相关的分期付款费用,但无法得到函数的工作。它将值视为0或停止工作。有什么想法吗?
这是购物功能
const comprarEquipos = () => {
// Flujo principal
let equipo = '';
let cantidad = 0;
let precio = 0;
let totalPedido = 0;
let seguirComprando = false;
do {
equipo = prompt("¿Que minisplit buscas:? inverter, convencional o alta eficiencia","Ej. convencional").toLowerCase();
cantidad = parseInt(prompt ("¿Cuantos equipos necesitas?", "Ej. 2"));
const cantidadComprobada = comprobarCantidad(cantidad)
switch (equipo) {
case "convencional":
precio = 4900;
break;
case "inverter":
precio = 7500;
break;
case "alta Eficiencia":
precio = 12000;
break;
default:
alert("Ingresa una opcion de producto valida");
precio = 0;
cantidad = 0;
}
totalPedido += precio*cantidadComprobada;
seguirComprando = confirm("¿Deseas seguir comprando?");
} while (seguirComprando)
const totalConInstalacion = calcularInstalacion(totalPedido);
return totalConInstalacion;
};
这是我用来验证数量的函数
const comprobarCantidad = (cantidad) => {
while (Number.isNaN(cantidad) || cantidad === 0) {
if (cantidad !== 0) {
alert("Debes especificar una cantidad.")
} else {
alert("Debes pedir una cantidad superior a 0.")
}
cantidad = parseInt(prompt("¿Cuantos equipos necesitas?", "Ej. 2"));
}
return cantidad;
}
这是计算分期付款费用的函数,但似乎没有得到正确的数量
const calcularInstalacion = (totalPedido) => {
let cantidadMinisplits = comprobarCantidad(cantidad);
let solicitaEnvio = confirm("¿Necesitas instalacion"); // 2.1 Aqui le preguntaremos al usuario si quiere envio y ese valor se aloja en la variante solicitaEnvio como true si da OK
if (solicitaEnvio && cantidadMinisplits >= 7) {
totalPedido = cantidadMinisplits*600;
alert("Por "+cantidadMinisplits+" equipos el costo de instalación es $"+totalPedido);
} else if (solicitaEnvio && cantidadMinisplits <= 6 && cantidadMinisplits !== 0) {
totalPedido = cantidad*1100;
alert("Por "+cantidadMinisplits+" equipos el costo de instalación es $");
} else {
alert("No se cobrara servicio de instalación")
}
return totalPedido;
}
但是要求确认安装的提示根本没有出现。我做错了什么?我怎么不能让它工作呢?
如果将值从candadMinisplit更改为一个数字,函数将正常工作
const calcularInstalacion = (totalPedido) => {
let cantidadMinisplits = comprobarCantidad(cantidad);
let solicitaEnvio = confirm("¿Necesitas instalacion"); // 2.1 Aqui le preguntaremos al usuario si quiere envio y ese valor se aloja en la variante solicitaEnvio como true si da OK
if (solicitaEnvio && cantidadMinisplits >= 7) {
totalPedido = cantidadMinisplits*600;
alert("Por "+cantidadMinisplits+" equipos el costo de instalación es $"+totalPedido);
} else if (solicitaEnvio && cantidadMinisplits <= 6 && cantidadMinisplits !== 0) {
totalPedido = cantidad*1100;
alert("Por "+cantidadMinisplits+" equipos el costo de instalación es $");
} else {
alert("No se cobrara servicio de instalación")
}
return totalPedido;
}
但调用验证函数不起作用
1条答案
按热度按时间ncecgwcz1#
正如Fiddling Away所建议的那样,这是一个范围问题。我也使用了这个建议来改进模拟器。更改
cantidad
确实解决了这个问题,谢谢你,抱歉没有翻译变量名,我将在以后的问题中这样做。