下面的JS代码在运行的时候提示NaN错误
那里写错了 该怎么写
<form name="form1" method="post" name="feedback">
<tr>
<td>房间单价:<span id="price">150</span></td>
<td>房间数:</td>
<td>
<select name="fangjianshu" id="fangjianshu" onchange="getTotal() ;">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
</td>
<td>预订天数:</td>
<td>
<select name="tianshu" id="tianshu" onchange="getTotal() ;">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
</td>
<td>总价:<span id="total">0</span></td>
</tr>
</form>
<script language="JavaScript">
<!-- function getSelectValue(id){ var obj=document.getElementById(id);
var index=obj.selectedIndex; //序号,取当前选中选项的序号
return obj.options[index].value;
} function getTotal(){ var roomNum = getSelectValue("fangjianshu") ; var bookDays = getSelectValue("tianshu") ; var price = parseInt(document.getElementById('price').innerHTML) document.getElementById("total").innerHTML = roomNum * bookDays * price ;
}
getTotal() ;
//-->
</script>
那里写错了 该怎么写
<form name="form1" method="post" name="feedback">
<tr>
<td>房间单价:<span id="price">150</span></td>
<td>房间数:</td>
<td>
<select name="fangjianshu" id="fangjianshu" onchange="getTotal() ;">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
</td>
<td>预订天数:</td>
<td>
<select name="tianshu" id="tianshu" onchange="getTotal() ;">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
</td>
<td>总价:<span id="total">0</span></td>
</tr>
</form>
<script language="JavaScript">
<!-- function getSelectValue(id){ var obj=document.getElementById(id);
var index=obj.selectedIndex; //序号,取当前选中选项的序号
return obj.options[index].value;
} function getTotal(){ var roomNum = getSelectValue("fangjianshu") ; var bookDays = getSelectValue("tianshu") ; var price = parseInt(document.getElementById('price').innerHTML) document.getElementById("total").innerHTML = roomNum * bookDays * price ;
}
getTotal() ;
//-->
</script>
var roomNum = getSelectValue("fangjianshu") ;
var bookDays = getSelectValue("tianshu") ;
var price = document.getElementById('price').innerHTML; //去掉parseInt roomNum = isNaN(roomNum) ? 1 : roomNum;
bookDays= isNaN(bookDays) ? 1:bookDays;
price = isNaN(price) ? 1:price;
document.getElementById("total").innerHTML = roomNum * bookDays * price ;
}
function getTotal(){
var roomNum = getSelectValue("fangjianshu") ;
var bookDays = getSelectValue("tianshu") ;
var price = document.getElementById('price').innerHTML; //去掉parseInt roomNum = isNaN(roomNum) ? 1 : parseFloat(roomNum);
bookDays= isNaN(bookDays) ? 1:parseFloat(bookDays);
price = isNaN(price) ? 1:parseFloat(price);
document.getElementById("total").innerHTML = roomNum * bookDays * price ;
}
格式也要转换下
观察你的代码,显然只有“ roomNum * bookDays * price ;”可能出错。由于你两个下拉单没有默认值,当页面刚加载的时候roomNum和bookDays都是NaN。
你选择一个的时候就运算一下,但这是还有一个乘数是NaN。建议设置默认值。另外数字最好都强转,parseInt parseDouble 确保Number类型再运行。
也就是下面的:parseInt("") ====> NaN我建议用parseInt的时候第二个参数最好加上,如果为十进制:parseInt("xx", 10)