2014-08-28 51 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; 
    } 
}