我正在编写一个带有即时输入的简单折扣应用程序。 问题出在我的三元运算符中-它不计算newPrice,也不显示输入无效。 你能告诉我我做错了吗?
如果输入错误,我想将newPrice分配为null并警告“无效数据”
我的代码:
const price = prompt('Please, enter the price:');
const discount = prompt('Please, enter the discount amount:');
const newPrice = ((9999999 > price > 0) && (99 > discount > 0)) ? (price - price * discount / 100) : (null, alert('Invalid data'));
console.log(newPrice)
答案 0 :(得分:1)
尝试将代码语句分离到
undefined
。 (根据您的问题)a > b > c
这些东西在JS中无法使用。请按照我下面或类似的方法重构语法。
const price = prompt('Please, enter the price:');
const discount = prompt('Please, enter the discount amount:');
const newPrice = (price && (9999999 > price) && discount && (99 > discount)) ? (price - price * discount / 100) : null;
console.log(newPrice);
if(!newPrice){alert('Invalid data');}
答案 1 :(得分:0)
提示可能正在将值读取为字符串。
使用parseInt
或一元+
const price = parseInt(prompt('Please, enter the price:'));
const discount = parseInt(prompt('Please, enter the discount amount:'));
const newPrice = ((price && price > 0 && price < 9999999) && (discount && discount >0 && discount < 99 )) ? (price - price * discount / 100) : (null, alert('Invalid data'));
console.log(newPrice)
答案 2 :(得分:0)
首先,将输入内容转换为数字,其次,将条件重构为有效的(不能使用x > y > z
IIRC):
const price = parseInt(prompt('Please, enter the price:'));
const discount = parseInt(prompt('Please, enter the discount amount:'));
const newPrice = (((9999999 > price) && price) && ((99 > discount) && discount)) ? (price - price * discount / 100) : (null, alert('Invalid data'));
console.log(newPrice);
答案 3 :(得分:0)
以下是通过方法if-else
和三元运算符(?:
)进行操作的示例。但是,如果您有很多决策权,我建议您选择if-else
。
var price = prompt('Please, enter the price:');
var discount = prompt('Please, enter the discount amount:');
var newPrice;
if((price>0 && price < 9999999)&&(discount>0 && discount < 99)){
newPrice=price - (price * discount) / 100;
}else{
newPrice='null';
alert('Invalid data');
}
var newPrice1 = ((9999999 > price && price > 0) && (99 > discount && discount > 0)) ? (price - (price * discount) / 100) : ('null', alert('Invalid data'));
console.log(newPrice);
console.log(newPrice1);