在JavaScript计算器中将NaN更改为Error

时间:2016-01-19 01:54:07

标签: javascript jquery nan

我有一个JavaScript计算器,其中包含许多定义如下的函数(以ln为例):

function ln(form) {
  form.display.value = Math.log(form.display.value);
}

如果用户输入一个负数并单击该按钮以激活此功能,则返回NaN,因为ln未定义为负值。我想让它返回Error。我试过这个,但它导致脚本停止工作:

var displayValue = form.display.value;
if (isNaN(displayValue)) displayValue = 'Error';

如果需要,这是显示的HTML标记:

<INPUT NAME="display" ID="disp" VALUE="0" SIZE="28" MAXLENGTH="25"/>

我怎样才能让它返回所需的输出?

2 个答案:

答案 0 :(得分:0)

尝试这样的事情:

function ln(form) {
    if(isNan(Math.log(form.display.value))){
       form.display.value = 'Error';
    } else {
      form.display.value = Math.log(form.display.value);
    } 
  }

答案 1 :(得分:0)

form.display.value返回的值是一个字符串。这意味着如果无法将值解析为true,则isNaN将始终返回Number。您需要先将此值更改为Number

function ln(form) {
  var displayValue = parseFloat(form.display.value);

  if(isNaN(displayValue)){
    form.display.setAttribute('value', 'Error');
  } else {
    form.display.setAttribute('value', Math.log(displayValue));
  } 
}