0

従業員が旅費を入力するための CGI フォームがあります。JavaScriptを使用して、計算されたデータを自動的に表示および送信しています。フォームの最初の (マイレージ) 計算が機能します。2番目(合計)の計算が表示されません。私が探している結果は、Miles * Rate (0.555) = Mileage (works) MileageExp + other input fields = TotalExpenses (not working) です。

これがjavascriptです-

<script type="text/javascript">
function totalexpense()
{
//mileage
a = document.event.Miles.value
b = document.event.Rate.value

c = a * b
z = c

document.event.Mileage.value = c.toFixed(2)

//total
d = document.event.Parking.value
e = document.event.Tolls.value
f = document.event.Plane.value
g = document.event.Train.value
h = document.event.Bus_Taxi.value
i = document.event.Lodging.value
j = document.event.Food.value
k = document.event.Other.value

l = z + d + e + f + g + h + i + j + k

document.event.Total_Expenses.value = l.toFixed(2)

}
</script>

ブラウザは、document.event.Total_Expenses.value = l.toFixed(2)行にエラーがあると言います。

HTML-

<p align="left" class="bold"><span class="style8">Mileage:</span><br>
Miles:
          <input name="Miles" size="10"> 
     X rate: 
       <input name="Rate" size="10" value="0.555" onblur="totalexpense();">
= 
       <input name="Mileage" size="10" readonly=true>
</p>

<p align="left">Parking:</span><br>
            <input name="Parking" size="10" onblur="totalexpense();">
</p>

<p align="left">Tolls:</span><br>
            <input name="Tolls" size="10" onblur="totalexpense();">
</p>

<p align="left">Airline Tickets:</span><br>
            <input name="Plane" size="10" onblur="totalexpense();">
</p>

<p align="left">Train:</span><br>
            <input name="Train" size="10" onblur="totalexpense();" >
</p>

<p align="left">Bus/Taxi:</span><br>
            <input name="Bus_Taxi" size="10" onblur="totalexpense();" >
</p>

<p align="left">Lodging:</span><br>
            <input name="Lodging" size="10" onblur="totalexpense();" > 
            Accomodations with- <input name="Accomodations_With" type="text"    size="40" />
</p>

<p align="left" class="bold"><span class="style8">Food/Beverage:</span><br>
            <input name="Food" size="10" onblur="totalexpense();" >
</p>

<p align="left">Other Expenses:</span><br>
            <input name="Other" size="10" onblur="totalexpense();" >
</p>

    <p align="left" class="bold"><span class="style8">Other Expense Notes:</span><br>
                  <span class="main style22">
                  <textarea name="Other_Expense_Notes" cols="50" rows="3" class="fieldbkgrd"></textarea>
                </span>
</p>

<h3>Total Expenses:<br>
            <input name="Total_Expenses" size="10" READONLY>
4

3 に答える 3

1

値を文字列から数値に変換する必要があります - .toFixed は数値に対してのみ機能します。

document.event.Total_Expenses.value = Number(l).toFixed(2);

コードがマイレージで機能した理由は、0.555 が次の整数にキャストされたためです。

c = a * b; (c = # * 0.555)

次に、連結のように扱われた「加算」を行います。

z + d + e + f + g + h + i + j + k;

これにより、int が文字列に変換されました。したがって:

document.event.Total_Expenses.value = l.toFixed(2);

型キャストが文字列になったため失敗しました。

値を明示的に変換したい場合は、parseInt(); を使用する必要があります。

d = parseInt(document.event.Parking.value);
于 2012-05-15T21:18:05.590 に答える
1

値を文字列から数値に変換する必要があります - .toFixed は数値に対してのみ機能します。

document.event.Total_Expenses.value = Number(l).toFixed(2);
于 2012-05-15T21:27:58.813 に答える
0
<input name="Total_Expenses" size="10" READONLY>

読み取り専用として設定するため、読み取り専用の要素に値を設定することはできません。それが私の最善の推測です

于 2012-05-15T21:15:52.130 に答える