2012-03-24 141 views
0

我有以下JavaScript代碼,在Firefox和Chrome中工作正常。但是當我在IE中加載這個頁面時,所有的字段都被NaN填充。任何幫助,將不勝感激Javascript NaN在IE瀏覽器中,但在Chrome瀏覽器,火狐的罰款

var totalarray=new Array(); 
    var totalarray2= new Array(); 
    var runningtotal = 0; 
    var runningtotal2 = 0; 
    var discount = .2; 
    var discounttotal = 0; 
    var discount1 = 0; 

    runningtotal = runningtotal * 1; 
    runningtotal2 = runningtotal2 * 1; 
     function displayResult(price,init) 
     { 
     var newstring = "quantity"+init; 
     var totstring = "total"+init; 
     var quantity = document.getElementById(newstring).value; 
     var quantity = parseFloat(quantity); 
     var test = price * quantity; 
     var test = test.toFixed(2); 
     document.getElementById(newstring).value = quantity; 
     document.getElementById(totstring).value = "$" + test; 
     totalarray[init] = test; 
     getTotal(); 
     } 
     function getTotal(){ 
     runningtotal = 0; 
     var i=0; 
     for (i=0;i<totalarray.length;i++){ 
      totalarray[i] = totalarray[i] *1; 
      runningtotal = runningtotal + totalarray[i]; 
      discounttotal = totalarray[i] * discount; 
      discounttotal = totalarray[i] - discounttotal; 
      document.getElementById('totalcost').value="$" + runningtotal.toFixed(2); 
      } 
      var orderpart1 = document.getElementById('totalcost').value; 
      var orderpart1 = orderpart1.substr(1); 
       var orderpart1 = orderpart1 * 1; 
     var orderpart2 = document.getElementById('totalcost2').value; 
     var orderpart2 = orderpart2.substr(1); 
     var orderpart2 = orderpart2 * 1; 
     var ordertot = orderpart1 + orderpart2; 
     document.getElementById('ordertotal').value ="$"+ ordertot.toFixed(2) 
     } 

這是調用上述腳本的php代碼。基本上只是一堆確定總數的下拉菜單。

<table border='0' cellpadding='0' cellspacing='0'> 
    <tr> 
     <td> 
      <table width="100%" border="1"> 
      <tr> 
       <th>Item&nbsp&nbsp&nbsp&nbsp&nbsp</th> 
       <th>Price&nbsp&nbsp&nbsp&nbsp&nbsp </th> 
       <th>Quantity&nbsp&nbsp&nbsp&nbsp&nbsp</th> 
       <th>Total&nbsp&nbsp&nbsp&nbsp&nbsp</th> 
      </tr> 
    <?php 
    mysql_connect("localhost", "***", "****") or die(mysql_error()); 
    mysql_select_db("fsenior") or die(mysql_error()); 
    $result = mysql_query("SELECT name, price,foodid FROM Food where foodtype='br'") or die(mysql_error()); 
    $init = 0; 
    while(list($name, $price, $brId) = mysql_fetch_row($result)) { 
    echo 
     "<tr> 
      <td>$name</td> 
      <td>\$$price</td> 
      <td><select name='quantity$init' id='quantity$init' onchange='displayResult($price,$init)'><option>0</option><option>1</option><option>2</option><option>3</option><option>4</option><option>5</option><option>6</option><option>7</option><option>8</option><option>9</option></td> 
      <td><input name='total$init' type='text' id='total$init' readonly='readonly' value='\$0.00'></td>  
     </tr>" ; 

    echo "<script type='text/javascript'>displayResult($price,$init);</script>"; 
    $foodname = "'SESS_FOODNAME_" . $init . "'"; 
    $foodid = "'SESS_FOODID_" . $init."'"; 
    $_SESSION[$foodname] = $name; 
    $_SESSION[$foodid] = $brId; 
    $init = $init+1; 
    } 
    $_SESSION['SESS_INIT'] = $init; 

    ?> 

     <tr> 
      <td></td> 
      <td></td> 
      <td>Total Cost</td> 
      <td><input name='totalcost' type='text' id='totalcost' readonly='readonly' value='$0.00'></td> 
     </tr> 
     <tr><td></td><td></td><td>Discount</td><td><input name='discountvalue1' id ='discountvalue1' type='text' readonly='readonly' value='20%'></td> </tr> 
     <tr><td></td><td></td><td>Total After Discount</td><td><input name='discounttotal1' id ='discounttotal1' type='text' readonly='readonly' value='$0.00'></td></tr> 
     </table> 
<tr> 
<td><br></td> 
</tr> 
</table> 
+0

在哪一行沒有錯誤發生 – 2012-03-24 21:34:12

+0

你能後調用腳本的代碼? – j08691 2012-03-24 21:36:49

+0

document.getElementById('totalcost')。value =「$」+ runningtotal.toFixed(2); document.getElementById('totalcost2')。value =「$」+ runningtotal2.toFixed(2); – Zinv 2012-03-24 21:38:20

回答

0

對此不確定,但可能值得一試。相反的:

document.getElementById('xxx').value = "$" + runningtotal2.toFixed(2); 

嘗試:

document.getElementById('xxx').value = "$" + runningtotal2.toFixed(2).toString(); 

或者:

document.getElementById('xxx').value = "$" + (runningtotal2.toFixed(2) + ''); 

理論上,+運營商將優先考慮其字符串連接的行爲,如果有衝突的類型(見this post到有一些例子),但是MSIE你唯一能做的就是測試......很多。

祝你好運;)

+0

感謝您的輸入。我其實是想清楚問題出在哪裏。由於我使用getElementById從下拉框中設置變量數量,因此它被設置爲null。要解決我必須執行以下操作: 原始 var quantity = document.getElementById(newstring)。 並將其更改爲: var quanttest = document.getElementById(newstring).selectedIndex; \t var quantity = document.getElementById(newstring).options [quanttest] .text; – Zinv 2012-03-25 05:22:29

相關問題