【问题标题】:How to get a number to display in alert box rather than NAN如何让数字显示在警报框中而不是 NAN
【发布时间】:2019-10-16 17:27:12
【问题描述】:

我正在学习 javascript,我编写了一个简单的程序来将英尺转换为米,将磅转换为公斤,我想在正确的测量值中使用警告框显示输出

我使用 typeof 检查了变量及其返回的数字,但警告框仍然显示 NAN。

我是 javascript 新手,我正在学习 udemy 课程。

var kgMark = parseFloat(kgMark); 
var meterMark = parseFloat(meterMark);
var bmiMark = parseFloat(bmiMark);
var feetMark = parseFloat(feetMark);
var lbsMark = parseFloat(lbsMark);

kgMark = lbsMark / 2.2046;
meterMark = feetMark / 3.2808;
bmiMark = kgMark / (meterMark * meterMark);

feetMark = prompt('How tall is mark in feet?');
lbsMark = prompt('How much does mark weigh in pounds?');



alert('Mark is ' + ' ' + kgMark + ' '+ 'kilograms');
alert('Mark is ' + ' ' + meterMark + ' ' + 'meters');
alert('Marks BMI is ' + ' ' + bmiMark);

我已经尝试了几种不同的方法,但我真的被卡住了。我一直在警告框中收到 NAN 错误。

【问题讨论】:

  • 您的代码中的kgMark 是什么?你在哪里定义的?
  • var kgMark = parseFloat(kgMark); 你希望这条线做什么?您无法在创建变量之前对其进行解析...
  • typeof NaN === "number"顺便说一句
  • 你的提示是在你使用之后吗?
  • 试试这个而不是 kgMark 和其他变量:isNaN(kgMark) ? kgMark : defaultValue,其中 defaultValue 是您想要显示的值,以防您的变量为 NaN

标签: javascript alert nan parsefloat


【解决方案1】:

先取一个值,然后执行每个逻辑:

var feetMark = prompt('How tall is mark in feet?');
var lbsMark = prompt('How much does mark weigh in pounds?');


feetMark = parseFloat(feetMark);
lbsMark = parseFloat(lbsMark);

var kgMark = lbsMark / 2.2046;
var meterMark = feetMark / 3.2808;
var bmiMark = kgMark / (meterMark * meterMark);

alert('Mark is ' + ' ' + kgMark + ' '+ 'kilograms');
alert('Mark is ' + ' ' + meterMark + ' ' + 'meters');
alert('Marks BMI is ' + ' ' + bmiMark);

【讨论】:

  • 你能补充一些关于为什么你的解决方案是解决方案的更多信息吗?
  • 当我们将变量解析为float时,它没有值所以它转换为NAN。
  • var kgMark = parseFloat(kgMark); - kgMark 在这里未定义。它会起作用,因为你稍后重新定义它,但它没有意义
  • 我做了,但我的声望不到 15,所以我猜它不会公开改变。
【解决方案2】:

将代码更改为以下有效:

var feetMark = parseFloat(prompt('How tall is mark in feet?'));
var lbsMark = parseFloat(prompt('How much does mark weigh in pounds?'));

kgMark = parseFloat(lbsMark / 2.2046);
meterMark = parseFloat(feetMark / 3.2808);

var bmiMark = parseFloat(kgMark / (meterMark * meterMark));

console.log('Mark is ' + ' ' + kgMark + ' '+ 'kilograms');
console.log('Mark is ' + ' ' + meterMark + ' ' + 'meters');
console.log('Marks BMI is ' + ' ' + bmiMark)

在您发布的代码中发生的事情混合了称为 hoisting 的内容以及当您在 undefined 变量上运行 parseFloat 时,它会生成这些变量 NaN;无论您对它进行什么操作,都会永远记住NaN

所以,当你确定你在其中收到一些价值时,我建议parseFloat 变量。

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-01
    • 2014-09-23
    • 2013-09-12
    • 2023-03-25
    • 2013-12-30
    • 1970-01-01
    • 2017-01-24
    • 1970-01-01
    相关资源
    最近更新 更多