【发布时间】:2020-07-22 19:22:01
【问题描述】:
我是 JavaScript 和 HTML 的新手,希望有人能注意到我做错了什么(我敢肯定这可能是我遗漏的一些小东西)。我已经看了一段时间了,我似乎无法弄清楚。
问题是分支#2(在代码中的注释中标识)返回NaN 用于houseVal,它应该返回sf 用于单户或tw 用于联排别墅/公寓.
我正在制作一个 JavaScript 表单。这里是:
function getPrice() {
var form = document.getElementById("calc");
var out = form.elements["z"];
//get numbers
var sqftVal = parseInt(form.elements["sqft"].value);
var bathsVal = parseInt(form.elements["baths"].value);
var builtVal = parseInt(form.elements["built"].value);
var lotVal = parseInt(form.elements["lot"].value);
for (i = 0; i < document.forms[0].zipcode.length; i++) {
if (document.forms[0].zipcode[i].checked) {
var zipVal = parseInt(document.forms[0].zipcode[i].value);
}
}
for (i = 0; i < document.forms[0].gar.length; i++) {
if (document.forms[0].gar[i].checked) {
var garageVal = parseInt(document.forms[0].gar[i].value);
}
}
for (i = 0; i < document.forms[0].housetype.length; i++) {
if (document.forms[0].housetype[i].checked) {
var houseVal = parseInt(document.forms[0].housetype[i].value);
}
}
if (zipVal == "47") {
if (garageVal == "2") {
if (houseVal == "sf") {
out.value = 1;
}
else { //townhouse
out.value = houseVal; // <------ PROBLEM: returns NaN <------------
}
}
else { //garage == 3
if (houseVal == "sf") {
out.value = 3;
}
else { //townhouse
out.value = 4;
}
}
}
else { //zip == 20148
if (garageVal == "2") {
if (houseVal == "sf") {
out.value = 5;
}
else { //townhouse
out.value = 6;
}
}
else { //garage == 3
if (houseVal == "sf") {
out.value = 7;
}
else { //townhouse
out.value = 8;
}
}
}
}
</script>
这是表格的家庭类型(例如,单身家庭或联排别墅/公寓)部分。
...
<fieldset>
<legend>House Type</legend>
<div>
<input type="radio" id="sf" name="housetype" value="sf" />
<label for="sf">Single Family</label>
</div>
<div>
<input type="radio" id="tw" name="housetype" value="tw" />
<label for="tw">Townhouse/Condo</label>
</div>
</fieldset>
...
【问题讨论】:
-
这一行
var houseVal = parseInt(document.forms[0].housetype[i].value试图将字符串解析为数字,显然它失败了。 -
我假设您正在其他地方检查
out.value是一个数字,这是实际错误。您突出显示的行将其设置为字符串。您声明它是 2 个字符串值之一,但在您的 else 语句中,您将其设置为字符串值而不是数字(如 if 的原始部分)
标签: javascript html forms button