2014-08-28 20 views
0

我正在從select元素中的onChange()函數調用的簡單switch語句來設置文本字段的值。目前它沒有設置值。任何有關改進代碼的見解將不勝感激。JavaScript:switch語句沒有在文本框中設置值

function setAgencyPrefix() 
{ 
var r = document.forms[0].getElementById('agency'); 
var requestor = r.options[r.selectedIndex].value; 
var a = document.forms[0].getElementById('agency_abbrev'); 
switch (requestor) { 
    case 'City of Banks': 
     a.value = 'BANKS'; 
     break; 
    case 'City of Beaverton': 
     a.value = 'BVT'; 
     break; 
    case 'City of Tigard': 
     a.value = 'TIG'; 
     break; 
    case 'City of Tualatin': 
     a.value = 'TUAL'; 
     break; 
    default: 
     a.value = 'OTHER'; 
     break; 
    } 
} 

<td> 
<select onChange="setAgencyPrefix();" id="agency" name="requesting_entity"> 
    <option value="City of Beaverton">Beaverton</option> 
    <option value="City of Banks">Banks</option> 
    <option value="City of Tigard">Tigard</option> 
    <option value="City of Tualatin">Tualatin</option> 
</select> 
</td>  

謝謝!

+2

失去'形式[0] .'在'document.forms [0] .getElementById' – Igor 2014-08-28 20:11:16

回答

0

我已經糾正你的代碼在這裏:

<script type="text/javascript"> 
    function setAgencyPrefix() 
    { 
     var r = document.getElementById('agency'); 
     var requestor = r.options[r.selectedIndex].value; 
     var a = document.getElementById('agency_abbrev'); 
     switch (requestor) { 
      case 'City of Banks': 
       a.value = 'BANKS'; 
       break; 
      case 'City of Beaverton': 
       a.value = 'BVT'; 
       break; 
      case 'City of Tigard': 
       a.value = 'TIG'; 
       break; 
      case 'City of Tualatin': 
       a.value = 'TUAL'; 
       break; 
      default: 
       a.value = 'OTHER'; 
      break; 
     } 
    } 
</script> 

<form> 
    <table> 
     <tr> 
      <td> 
       <input type="text" id="agency_abbrev"> <br> 
       <select onChange="setAgencyPrefix();" id="agency" name="requesting_entity"> 
        <option value="City of Beaverton">Beaverton</option> 
        <option value="City of Banks">Banks</option> 
        <option value="City of Tigard">Tigard</option> 
        <option value="City of Tualatin">Tualatin</option> 
       </select> 
      </td> 
     </tr> 
    </table> 
</form> 

請注意,爲了獲得元素,你可以使用的document.getElementById( 「element_id」)document.forms [0] .elements [「element_name」]

沒有叫這樣的事情document.forms [0] .getElementById(「element_id」)

1

我想問題是在var a,它沒有調用它應該調用的文本框,在瀏覽器中使用控制檯檢查它,並在控制檯中鍵入a,如果它不返回文本字段只是刪除該表單[0]並嘗試。 。 一切順利:)

0

我反對switch語句偏頗,因爲道格拉斯·克羅克福德使得對潛在的下通在JavaScript中的情況下,好的零件。

隨着的if/else控制流這應該工作:

function setAgencyPrefix(){ 
var a; 
var r = document.getElementById('agency'); 
console.log(r.options[r.selectedIndex].value); 
var requestor = r.options[r.selectedIndex].value; 
if (requester === 'City of Banks'){ 
    a.value = 'Banks'; 
    return a 
} else if (requester === 'City of Beaverton'){ 
    a.value = 'BVT'; 
    return a; 
} else if (requester === 'City of Tigard'){ 
    a.value = 'TIG'; 
    return a; 
} else if (requester === 'City of Tualatin'){ 
    a.value = 'TUAL'; 
    return a 
} else { 
    a.value = 'OTHER'; 
    return a; 
    } 
}