下面的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>
&nbsp;&nbsp;&nbsp;&nbsp;
<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>

解决方案 »

  1.   

        function getTotal(){
            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 ;
        }
      

  2.   


        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 ;
        }
    格式也要转换下
      

  3.   

    NaN错误只会出现数字运算或者其他类型相数字转换时。
    观察你的代码,显然只有“ roomNum * bookDays * price ;”可能出错。由于你两个下拉单没有默认值,当页面刚加载的时候roomNum和bookDays都是NaN。
    你选择一个的时候就运算一下,但这是还有一个乘数是NaN。建议设置默认值。另外数字最好都强转,parseInt parseDouble 确保Number类型再运行。
      

  4.   

    上面的例子并没有问题,如果价格是动态的  为空的话
    也就是下面的:parseInt("") ====>  NaN我建议用parseInt的时候第二个参数最好加上,如果为十进制:parseInt("xx", 10)