2014-03-05 55 views
0

剛接觸javascript我遇到了一個奇怪的問題。我有一個元素和一個變量的數組,我想將該變量與所有數組元素進行比較,如果它們匹配,則執行一些操作。比較一個變量和一個數組元素不工作[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") 

......它確實並且完美地工作。

我是不是比較這兩個元素不正確?任何幫助將不勝感激。

更新 - FULL .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]); 
    } 
} 

的函數被調用和變量selected_country使用通過PHP文件設置:

<script language="javascript"> 
    var selected = <?php echo json_encode($g_country); ?>; 
    print_country("country", selected); 
</script> 
+0

您是否通過與調試器的循環加強?你可以提供一個[完整的最低限度的例子嗎?](http://stackoverflow.com/help/mcve) –

+0

如果你不練習你的JavaScript,然後使用Lo-Dash lib http://lodash.com/ – wayne

+1

「 selected_country'集合?請發佈完整的代碼及其調用 – Bergi

回答

1

問題不在於if聲明,而是您在別處有錯誤。 是什麼是錯的:

option_str.options[option_str.length] = ... 

option_str.length可能不是你的意思。嘗試:

option_str.options[option_str.options.length] = ... 

...或者更好的是:

option_str.options.push(new Option(...)); 

Here's a working example.

相關問題