Javascript在I.E.中不起作用,但在FF中工作正常

时间:2012-10-04 16:51:37

标签: javascript internet-explorer

我有以下javascript函数:

function updatePrintCost()
{
    var qty = parseFloat(document.getElementById('qty').value);
    var pp = parseFloat(document.getElementById('pp').value);

    var finalPrice = qty * pp;

    if (!isNaN(finalPrice))
        fp.value = "$" + finalPrice.toFixed(2);
    else
        fp.value = "Error";
}

由以下HTML代码调用:

<table>
    <tr>
        <td style='border:none;'>Quantity:</td>
        <td style='border:none;'><input type='text' id='qty' name='quantity' onChange="updatePrintCost()" style='width:50px;' /></td>
        <td style='border:none;'>Print Price:</td>
        <td style='border:none;'><input type='text' name='printPrice' id='pp' onChange="updatePrintCost()" style='width:50px;' /></td>
        <td style='border:none;'> = </td>
        <td style='border:none;'><input type='finalPrice' id='fp' placeholder='0.00' style='width:75px;' /></td>
    </tr>
</table>

我在那里放了一些警报测试,调用了函数IS,但在设置fp的值时失败了。

有人能看出为什么这不起作用吗?

3 个答案:

答案 0 :(得分:4)

您对fp的声明在哪里?你需要:

var fp = document.getElementById('fp');

或者:

if (!isNaN(finalPrice)) 
       document.getElementById('fp').value = "$" + finalPrice.toFixed(2); 
else 
       document.getElementById('fp').value = "Error"; 

你在finalPrice类型中也有一个奇怪的html输入,而不是常规类型。

如果您想了解它在Firefox中运行的原因,请参阅this。这是一个跨浏览器的解决方案。你这样做的方式只适用于较新的浏览器。

答案 1 :(得分:1)

没有回答你的问题,但在我看来<input type='finalPrice' ...>并不是你想要的。你可能意思是<input type='text' name='finalPrice' ...>,对吧?

答案 2 :(得分:1)

它不是fp,价值。 将其更改为f.p.​​value 它会工作