刚接触javascript我遇到了一个奇怪的问题。我有一个元素数组和一个变量,我想将该变量与所有数组元素进行比较,并在它们匹配时执行某些操作。
以下是代码片段:
for (var i=0; i<country_arr.length; i++) {
option_str.options[option_str.length] = new Option(country_arr[i],country_arr[i]);
if(selected_country == country_arr[i]){
option_str.options[i].selected = true;
}
}
数组本身是一个字符串数组:
var country_arr = new Array("Republic of Ireland", "Northern Ireland");
无论出于何种原因,这不会进入if语句,但奇怪的是当我替换时:
if(selected_country == country_arr[i])
使用:
if(selected_country == "Republic of Ireland")
......它确实完美。
我是否错误地比较了这两个元素?任何帮助将不胜感激。
更新 - 完整的.js文件:
完整外部.js文件:
//Create a new array, to contain the list of countries available.
var country_arr = new Array("Republic of Ireland", "Northern Ireland");
//Create a new array to hold a list of counties depending on country selection.
var s_a = new Array();
s_a[0]="";
s_a[1]="Carlow|Cavan|Clare|Cork|Donegal|Dublin|Galway|Kerry|Kildare|Kilkenny|Laois|Leitrim|Limerick|Longford|Louth|Mayo|Meath|Monaghan|Offaly|Roscommon|Sligo|Tipperary|Waterford|Westmeath|Wexford|Wicklow";
s_a[2]="Antrim|Armagh|Down|Dungannon|Derry|Tyrone";
function print_country(country_id, selected_country){
//Given the id of the <select> tag as function argument, it inserts <option> tags
var option_str = document.getElementById(country_id);
option_str.length=0;
option_str.options[0] = new Option('Select Country','');
option_str.selectedIndex = 0;
for (var i=0; i<country_arr.length; i++) {
option_str.options[option_str.length] = new Option(country_arr[i],country_arr[i]);
if(selected_country == country_arr[i]){
option_str.options[i].selected = true;
print_county('county',i);
}
}
}
function print_county(state_id, state_index){
var option_str = document.getElementById(state_id);
option_str.length=0; // Fixed by Julian Woods
option_str.options[0] = new Option('Select County','');
option_str.selectedIndex = 0;
var state_arr = s_a[state_index].split("|");
for (var i=0; i<state_arr.length; i++) {
option_str.options[option_str.length] = new Option(state_arr[i],state_arr[i]);
}
}
调用该函数,并使用以下命令通过php文件设置变量selected_country:
<script language="javascript">
var selected = <?php echo json_encode($g_country); ?>;
print_country("country", selected);
</script>
答案 0 :(得分:1)
问题不在于if
声明,而在其他地方有错误。 这是错的:
option_str.options[option_str.length] = ...
option_str.length
可能不是你的意思。尝试:
option_str.options[option_str.options.length] = ...
......或者更好:
option_str.options.push(new Option(...));