2010-05-25 28 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