2013-02-17 71 views
0

我想要做的是这样的: 当从下拉列表中选择一项工作,我想填充totally表中的hourlyRate字段数额。
这是我的下拉列表:试图显示一个值,当选择列表选项更改onchange

<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。我无法弄清楚我做错了什么!

回答

1

它看起来像你调用你的函数直线距离,而不是告诉它要在onchange事件称为:

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

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

试试这个:

$('job').onchange = rateChange; 

现在rateChange功能是将要运行onchange事件触发时的功能。

如果您想将handlerfunction添加到您的活动,您必须不加括号
+0

非常感谢。我知道这是一件愚蠢的事情,我做错了。 – TaraX 2013-02-17 20:13:06

0

...

你必须WIRTE:

$('job').onchange = rateChange; 

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

相关问题