繁体   English   中英

IE中的Javascript NaN,但可在Chrome,Firefox中正常运行

[英]Javascript NaN in IE but works fine in Chrome, Firefox

我有以下javascript代码,在Firefox和chrome中可以正常工作。 但是,当我在IE中加载此页面时,所有字段都被NaN填充。

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>

对此不确定,但可能值得一试。 代替:

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

尝试:

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

要么:

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

从理论上讲,如果存在冲突类型,则+运算符将优先考虑其字符串连接行为(请参阅此帖子以提供一些示例),但是使用MSIE唯一可以做的就是测试...很多。

祝好运 ;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM