Javascript在IE中返回Nan,FF ok

Javascript在IE中返回Nan,FF ok,javascript,math,internet-explorer,Javascript,Math,Internet Explorer,我对javascript非常陌生,编写这个脚本来添加购物车并打印小计和总计。它在FF中工作,但在IE中不工作。此函数通过单击值为0-25的三个选择选项之一调用。它位于一个名为head的js文件中。它所做的是将选定的值作为变量获取、解析、添加和乘法,并更改表的innerHTML以反映小计和总计。FF做得很好,但IE给了Nan。我试着用很多不同的方法重写它,很多翻译仍然在FF中工作,但不是IE8。我确保变量和表单id不会重复 function gen_invoice() { var scou

我对javascript非常陌生,编写这个脚本来添加购物车并打印小计和总计。它在FF中工作,但在IE中不工作。此函数通过单击值为0-25的三个选择选项之一调用。它位于一个名为head的js文件中。它所做的是将选定的值作为变量获取、解析、添加和乘法,并更改表的innerHTML以反映小计和总计。FF做得很好,但IE给了Nan。我试着用很多不同的方法重写它,很多翻译仍然在FF中工作,但不是IE8。我确保变量和表单id不会重复

function gen_invoice() {
    var scount = parseInt(document.shopcart.studentcount.value, 10);
    var ycount = parseInt(document.shopcart.youthcount.value, 10);
    var fcount = parseInt(document.shopcart.facultycount.value, 10);

    //html output source is 3 selects like this, with diff ids and names: 
    //<select name="studentcount" id="studentcount">  
    //<option onclick="gen_invoice()" value="0">0 </option></select>
    var cardcost = parseInt(document.shopcart.cardprice.value, 10);

    //cardcost comes from hidden input value: 
    //<input type="hidden" id="cardprice" name="cardprice" value="25">
    var totalsum = scount + ycount + fcount;

    var grandtotal = totalsum * cardcost;

    document.getElementById('s_price').innerHTML = scount * cardcost;
    document.getElementById('y_price').innerHTML = ycount * cardcost;
    document.getElementById('f_price').innerHTML = fcount * cardcost;
    document.getElementById('grand').innerHTML = grandtotal;
    //....
}
功能gen\u发票(){
var scont=parseInt(document.shopcart.studentcount.value,10);
var ycount=parseInt(document.shopcart.youthcount.value,10);
var fcount=parseInt(document.shopcart.facultycount.value,10);
//html输出源是这样的3个选择,具有不同的ID和名称:
//  
//0 
var cardcost=parseInt(document.shopcart.cardprice.value,10);
//cardcost来自隐藏的输入值:
//
var totalsum=Scont+ycount+fcount;
var grandtotal=总额*卡成本;
document.getElementById('s_price')。innerHTML=scont*cardcost;
document.getElementById('y_price')。innerHTML=ycount*cardcost;
document.getElementById('f_price')。innerHTML=fcount*cardcost;
document.getElementById('grand').innerHTML=grandtotal;
//....
}
…在此之后,有3个长循环用于写出其他形式,但它们在IE中也不起作用,因为它们依赖于选定的值为整数。这部分先发生,然后返回Nan,所以我确定问题在哪里。
我真的为此撞到了桌子上。你可以想象,能够把网站的其余部分写得很漂亮,但却无法将3个数字相加是多么令人沮丧。救命啊

使用

  • document.getElementById(“foo”)
  • document.forms.shopcart.elements.cardprice

这两种方法都比您现在所做的更好。

innerHTML
需要字符串对象,而不是数字。尝试在数值表达式后添加“”(空格)


比如:
…innerHTML=(count*cardcost)+”

返回NaN
的语句是什么?尝试使用console.log(),甚至使用alert查看中间值是什么即使是这种情况,也不会生成
NaN
。只要需要,数字就会被强制转换成字符串。只需尝试
alert((4).toString())
innerHTML的对象实际上甚至不是字符串。它是HTMLElement对象。因此,如何将数字转换成这个数字是一个很大的兼容性问题。