0

私は次の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>

私はそこにいくつかの警告テストを入れ、関数は呼び出されていますが、fp の値の設定に関しては失敗します。

なぜこれがうまくいかないのか誰にもわかりますか?

4

3 に答える 3

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 で動作していた理由を知りたい場合は、こちらを参照してください。これはクロス ブラウザ ソリューションです。あなたが行っていた方法は、新しいブラウザーでのみ機能します。

于 2012-10-04T16:54:18.733 に答える
1

fp、valueではありません。fpvalueに変更すると機能します

于 2012-10-12T18:23:56.113 に答える
1

あなたの質問には答えていませんが、<input type='finalPrice' ...>あなたが意図したものではないように思えます。おそらく、ということ<input type='text' name='finalPrice' ...>ですよね?

于 2012-10-04T16:56:47.837 に答える