我是非常新的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个数字加在一起。请帮忙!
答案 0 :(得分:1)
使用
访问表单元素可能会更好document.getElementById("foo")
document.forms.shopcart.elements.cardprice
这两种方法都比你现在做的更好。
答案 1 :(得分:0)
innerHTML
期望字符串对象,而不是数字。尝试在数值表达式后添加''(空格)。
喜欢:....innerHTML = (count * cardcost) + "";