0

我有一张 cgi 表格供员工输入差旅费。我正在使用 javascript 自动显示和发送计算数据。表格上的第一个(里程)计算有效。我无法显示第二个(总)计算。我正在寻找的结果是- Miles * Rate (0.555) = Mileage (works) MileageExp + 其他输入字段 = TotalExpenses (不工作)

这是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 回答