当选择列表选项随onchange更改时,尝试显示值

时间:2013-02-17 19:56:26

标签: javascript onchange

我要做的是: 从下拉列表中选择作业时,我想在总计表中填充一个金额的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();
}

因此,如果有人从下拉列表中选择server / bartender,我希望我的总计表中的hourlyRate字段显示$ 12。我无法弄清楚我做错了什么!

2 个答案:

答案 0 :(得分:1)

您似乎正在立即调用您的函数,而不是在onchange事件中调用它:

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

因此,rateChange(无)的返回值被分配给onchange事件。

试试这个:

$('job').onchange = rateChange;

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

答案 1 :(得分:0)

如果您想为事件添加处理程序功能,则不得添加括号...

你必须得到:

$('job').onchange = rateChange;

刚试过......工作正常。 如果您要添加括号,则该函数将仅在window.onload ...

中调用一次