0

我要做的是:当从下拉列表中选择工作时,我想用金额填充总计表中的 hourlyRate 字段。
这是我的下拉列表:

    <fieldset>
      <legend>What is your position?</legend>
      <select name="job" id="job">
        <option value="job0">Please select a position:</option>
        <option value="job1">Server/Bartender</option>
        <option value="job2">Greeter/Busser</option>
        <option value="job3">Kitchen Support</option>
      </select>
    </fieldset>

这是我的总计表:

<div id="totals">
<table width="408">
<tr>
  <td width="214">Hourly Rate:</td><td width="57" id="hourlyRate"></td></tr>
</table>
</div>

这是我的 JavaScript:

var $ = function (id) {
return document.getElementById(id); 
}

function rateChange () {

var rate="";
    if ($('job').value == 'job0') {
    rate = '0';
    }
    if ($('job').value == 'job1') {
    rate = '12';
    }

    if ($('job').value == 'job2') {
    rate = '10';
    }

    if ($('job').value == 'job3') {
    rate = '11';
    }

$('hourlyRate').innerHTML = "$ " + rate;
}
window.onload = function () {
$('job').onchange = rateChange();
}

因此,如果有人从下拉列表中选择服务器/调酒师,我希望总计表中的 hourlyRate 字段显示 12 美元。我无法弄清楚我做错了什么!

4

2 回答 2

1

看起来您正在立即调用您的函数,而不是告诉它在onchange事件中被调用:

$('job').onchange = rateChange();

所以 (nothing) 的返回值rateChange被分配给 onchange 事件。

试试这个:

$('job').onchange = rateChange;

现在该函数是事件触发rateChange时将运行的函数。onchange

于 2013-02-17T20:02:42.963 回答
0

如果你想为你的事件添加一个处理函数,你不能添加括号......

你必须写:

$('job').onchange = rateChange;

刚刚尝试...工作正常。window.onload如果您要添加方括号,则该函数将仅在...中调用一次

于 2013-02-17T20:05:36.933 回答