2013-02-17 67 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中被調用一次...

相關問題