我的问题是这个简单的程序始终显示“NaN”错误。
我针对此简单功能的代码将始终为简单的加法指令提示“NaN”错误,但我不确定如何解决此问题。
该程序应该简单地添加里程和奖励,如果futureTrips
是大于0的任何值,则奖励为1000。
我的代码是:
var miles;
var futureTrips;
var totalMiles;
var bonus;
miles = prompt("Please enter your current miles");
futureTrips = prompt("pleae enter amount of future trips");
if (futureTrips > 0){
(bonus = 1000);}
else{
(bonus = 0);}
totalMiles = (bonus.value + miles.value);
alert(totalMiles);
这将始终显示“NaN”错误。有关如何解决此问题的任何提示?
最佳答案
问题:bonus
和miles
是数字(实际上miles
是一个字符串)。您必须使用它们而不是不存在的.value
属性(因此是undefined
),因此:
totalMiles = (bonus.value + miles.value);
是相同的:
totalMiles = (undefined + undefined);
这是
NaN
。修复:
直接使用
bonus
和miles
(尽管您仍然需要将miles
转换为数字):totalMiles = bonus + Number(miles);
工作摘要:
var miles;
var futureTrips;
var totalMiles;
var bonus;
miles = prompt("Please enter your current miles");
futureTrips = prompt("pleae enter amount of future trips");
futureTrips = Number(futureTrips);
if (futureTrips > 0) {
bonus = 1000;
} else {
bonus = 0;
}
totalMiles = bonus + Number(miles);
alert(totalMiles);
注意:
prompt
返回字符串,因此您必须先将miles
转换为数字,否则将获得字符串连接而不是算术加法。您不必转换bonus
,因为它已经是一个数字。您还应该考虑将futureTrips
转换为if
之前的数字。 (bonus = 1000);
等效于bonus = 1000;
。