Javascript在IE中返回Nan,FF ok

时间:2010-05-25 18:58:56

标签: javascript math internet-explorer

我是非常新的javascript,并编写此脚本来添加购物车并打印小计和总计。它适用于FF但不适用于IE。通过onclick选择值为0-25的三个选项之一来调用此函数。它位于头部调用的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;
    //....
}

...在此之后有3个长循环用于写出其他一些形式,但它们在IE中不起作用,因为它们依赖于所选值为整数。这部分首先发生并返回Nan,所以我确定问题就在这里。  我真的在桌子上撞到了我的脑袋。您可以想象能够精美地编写整个网站的其余部分是多么令人沮丧,但是却无法将3个数字加在一起。请帮忙!

2 个答案:

答案 0 :(得分:1)

使用

访问表单元素可能会更好
  • document.getElementById("foo")
  • document.forms.shopcart.elements.cardprice

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

答案 1 :(得分:0)

innerHTML期望字符串对象,而不是数字。尝试在数值表达式后添加''(空格)。

喜欢:....innerHTML = (count * cardcost) + "";