我有两个完全相同的简单web项目,但是一个一切正常,另一个没有,告诉我问题是什么,哪里有bug
当我输入的东西给我结果NaN
我试图在没有“toFixed()”方法的情况下完成所有工作
这是代码页
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Конвертер валют</title>
<script src="jquery-2.1.1.min.js"></script>
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="style.css"/>
</head>
<body>
<div class="Converter">
<hr>
input value <label for="inputValue"></label><input type="text" value="0.00" onkeypress="return isNumberKey(event)"
onkeyup="count(this.value)"
onfocus="if (this.value == '0.00') this.value='';"
onblur="if (this.value == '') {this.value = '0.00'; }"
id="inputValue">
<p>Result</p>
<ul>
<li><input type="text" readonly value="0.00"
onblur="if (this.value == '') {this.value = '0.00'; }" id="conventUSD">
<input type="text" id="value1" readonly size="1" value="USD">
<input value= "5.553" readonly id="exchange1"></li>
<li><input type="text" readonly value="0.00"
onblur="if (this.value == '') {this.value = '0.00'; }" id="conventRUB">
<input type="text" id="value2" readonly size="1" value="RUB">
<input value= "10.553" readonly id="exchange2"></li>
<li><input type="text" readonly value="0.00"
onblur="if (this.value == '') {this.value = '0.00'; }" id="conventEUR">
<input type="text" id="value3" readonly size="1" value="EUR">
<input value= "15.553" readonly id="exchange3"></li>
<li><input type="text" readonly value="0.00"
onblur="if (this.value == '') {this.value = '0.00'; }" id="conventUAH">
<input type="text" id="value4" readonly size="1" value="PLN">
<input value= "20.553" readonly id="exchange4"></li>
</ul>
</div>
<body/>
<html/>
这是js代码
function isNumberKey(evt) {
var charCode = ((evt.which) ? evt.which : event.keyCode);
return !(charCode > 31 && (charCode != 46 && charCode != 44 && (charCode < 48 || charCode > 57)));
}
function count(inputValue) {
if (inputValue != "" && inputValue != "0.00") {
$('#conventUSD').val(($("#exchange1").val() * inputValue).toFixed(4));
$('#conventRUB').val(($("#exchange2").val() * inputValue).toFixed(4));
$('#conventEUR').val(($("#exchange3").val() * inputValue).toFixed(4));
$('#conventUAH').val(($("#exchange4").val() * inputValue).toFixed(4));
} else {
var defaultValue = "0.00";
$('#conventUSD').val(defaultValue);
$('#conventEUR').val(defaultValue);
$('#conventRUB').val(defaultValue);
$('#conventUAH').val(defaultValue);
}
}
请求帮我解决这个问题,因为我尝试了一切,不知道问题在哪里!
答案 0 :(得分:2)
toFixed
正在给你"NaN"
,因为:
inputValue
是一个无法转换为数字的字符串,或
#exchange1/2/3/4
的值是一个无法转换为数字的字符串
...所以当您将inputValue
乘以其中一个交换框的值时,您获得的值为NaN
。当您在toFixed
上致电NaN
时,您会获得"NaN"
。
要寻找的东西:
也许您需要在转换
转换前您肯定需要删除,
,+"1,234"
为NaN
或者您允许(其他)非数字字符进入字段(keypress
不是数据进入字段的唯一方式,isNumberKey
使用的检查看起来很狡猾)