Wy js 方法 toFixed() 返回 NaN

Par*_*nin -1 html javascript

我有两个完全相同的简单 Web 项目,但一个一切正常,另一个则不然,告诉我问题是什么,哪里有错误

\n\n

当我输入某些内容时,结果为 NaN

\n\n

我尝试在不使用“toFixed()”方法的情况下完成所有工作

\n\n

这是例子

\n\n

这是代码页

\n\n
 <!DOCTYPE html>\n<html>\n<head>\n    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">\n    <title>\xd0\x9a\xd0\xbe\xd0\xbd\xd0\xb2\xd0\xb5\xd1\x80\xd1\x82\xd0\xb5\xd1\x80 \xd0\xb2\xd0\xb0\xd0\xbb\xd1\x8e\xd1\x82</title>\n     <script src="jquery-2.1.1.min.js"></script>\n    <script src="page.js"></script>\n    <link type="text/css" rel="stylesheet" href="style.css"/>\n</head>\n<body>\n\n<div class="Converter">\n    <hr>\n   input value  <label for="inputValue"></label><input type="text" value="0.00" onkeypress="return isNumberKey(event)"\n                                                    onkeyup="count(this.value)"\n                                                    onfocus="if (this.value == \'0.00\') this.value=\'\';"\n                                                    onblur="if (this.value == \'\') {this.value = \'0.00\'; }"\n                                                    id="inputValue">\n\n    <p>Result</p>\n\n    <ul>\n        <li><input type="text" readonly value="0.00" \n                   onblur="if (this.value == \'\') {this.value = \'0.00\'; }" id="conventUSD">\n            <input type="text" id="value1" readonly size="1" value="USD">\n            <input value= "5.553" readonly id="exchange1"></li>\n        <li><input type="text" readonly value="0.00" \n                   onblur="if (this.value == \'\') {this.value = \'0.00\'; }" id="conventRUB">\n            <input type="text" id="value2" readonly size="1" value="RUB">\n            <input value= "10.553" readonly id="exchange2"></li>\n        <li><input type="text" readonly value="0.00" \n                   onblur="if (this.value == \'\') {this.value = \'0.00\'; }" id="conventEUR">\n            <input type="text" id="value3" readonly size="1" value="EUR">\n            <input value= "15.553" readonly id="exchange3"></li>\n        <li><input type="text" readonly value="0.00" \n                   onblur="if (this.value == \'\') {this.value = \'0.00\'; }" id="conventUAH">\n            <input type="text" id="value4" readonly size="1" value="PLN">\n            <input  value= "20.553" readonly id="exchange4"></li>\n    </ul>\n</div>\n            <body/>\n<html/>\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是js代码

\n\n
 function isNumberKey(evt) {\n    var charCode = ((evt.which) ? evt.which : event.keyCode);\n    return !(charCode > 31 && (charCode != 46 && charCode != 44 && (charCode < 48 || charCode > 57)));\n\n}\n\n\nfunction count(inputValue) {\n\n    if (inputValue != "" && inputValue != "0.00") {\n\n        $(\'#conventUSD\').val(($("#exchange1").val() * inputValue).toFixed(4));\n        $(\'#conventRUB\').val(($("#exchange2").val() * inputValue).toFixed(4));\n        $(\'#conventEUR\').val(($("#exchange3").val() * inputValue).toFixed(4));\n        $(\'#conventUAH\').val(($("#exchange4").val() * inputValue).toFixed(4));\n\n    } else {\n        var defaultValue = "0.00";\n        $(\'#conventUSD\').val(defaultValue);\n        $(\'#conventEUR\').val(defaultValue);\n        $(\'#conventRUB\').val(defaultValue);\n        $(\'#conventUAH\').val(defaultValue);\n\n    }\n\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

请帮助我解决这个问题,因为我尝试了一切,但不知道问题出在哪里!

\n

T.J*_*der 5

toFixed给你是"NaN"因为:

  • inputValue是一个无法转换为数字的字符串,或者

  • #exchange1/2/3/4具有一个无法转换为数字的字符串值

...因此,当您乘以inputValue其中一个交换盒的价值时,您将得到价值NaN。当你打电话时,toFixedNaN会得到"NaN".

寻找的东西:

  • 也许您需要在转换之前修剪空格

  • 你当然需要,在转换之前删除,+"1,234"NaN

  • 或者您允许(其他)非数字字符进入字段(keypress这不是数据进入字段的唯一方式,并且您使用的检查isNumberKey看起来非常狡猾)