我正在处理一个简单的switch语句,该语句从select元素中的onChange()函数调用,以设置文本字段的值。目前它没有设置值。任何有关改进代码的见解都将受到赞赏。
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>
谢谢!
答案 0 :(得分:1)
我猜问题是在var a中,它没有调用它应该调用的文本框,在浏览器中使用控制台检查它并在控制台中键入a,如果它没有返回文本字段只是删除该表单[ 0]并尝试。 一切顺利。:)
答案 1 :(得分: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')
的东西答案 2 :(得分:0)
我对开关陈述产生了偏见,因为道格拉斯·克罗克福德(Douglas Crockford)提出了反对Javascript the Good Parts的潜在影响的案例。
使用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;
}
}