2010-05-25 88 views
0

即时通讯非常新的JavaScript,并写这个脚本来添加一个购物车,并打印出小计和总计。它在FF中工作,但不在IE中。这个函数通过onclick调用三个选项中的一个,值为0-25。它在头部被称为js文件。它所做的是将所选值作为变量,解析它们,添加和相乘,并更改表格的innerHTML以反映小计和总数。 FF很棒,但IE给了Nan。我尝试了许多不同的方式来重写它,许多翻译仍然在FF中工作,但不是IE8。 ive确保变量和表单id不重复。Javascript在IE中返回南,FF ok

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,所以我确定问题在这里somwhere。 我已经从字面上把我的头撞到了桌子上。你可以想象,能够精美地写出整个网站的其余部分是多么的令人沮丧,但是却无法将3个数字加在一起。请帮助!

+2

什么声明返回'NaN'?尝试使用console.log(),甚至发出警报以查看中间值是什么 – 2010-05-25 19:05:54

回答

1

你可能有更好的运气使用

  • document.getElementById("foo")
  • document.forms.shopcart.elements.cardprice

这两个比你现在正在做什么更好的方法访问的形式要素。

0

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

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

+0

即使情况如此,它也不会产生'NaN'。一个数字将在任何时候被强制转换为字符串。只要尝试'alert((4).toString())' – 2010-05-25 19:20:27

+0

innerHTML的对象实际上并不是一个字符串。它是HTMLElement对象。那么,这个数字如何转化为这个 - 是一个很大的兼容性问题。 – Thevs 2010-05-25 19:54:40