我有两个完全相同的简单 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/>\nRun 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}\nRun Code Online (Sandbox Code Playgroud)\n\n请帮助我解决这个问题,因为我尝试了一切,但不知道问题出在哪里!
\ntoFixed给你是"NaN"因为:
inputValue是一个无法转换为数字的字符串,或者
#exchange1/2/3/4具有一个无法转换为数字的字符串值
...因此,当您乘以inputValue其中一个交换盒的价值时,您将得到价值NaN。当你打电话时,toFixed你NaN会得到"NaN".
寻找的东西:
也许您需要在转换之前修剪空格
你当然需要,在转换之前删除,+"1,234"是NaN
或者您允许(其他)非数字字符进入字段(keypress这不是数据进入字段的唯一方式,并且您使用的检查isNumberKey看起来非常狡猾)
| 归档时间: |
|
| 查看次数: |
5279 次 |
| 最近记录: |