2015-01-21 4 views
0

У меня есть серия массивов JSON, каждая из которых содержит объекты внутри и один из этих массивов, выбранных в функции .change, а массивы находятся внутри операторов if.Доступ к объектам массива JSON в jquery с использованием .each

var country_data;

$("#job").change(function() { 
    selectedValue = $("#job option:selected").val(); 

    if (selectedValue == "job_1") { 

     country_data = [{ 
      "country_id": 1, 
       "country": "Luxembourg", 
       "local_wage": "407", 
       "wage": "489", 
       "exchange": "0.98" 
     }, { 
      "country_id": 2, 
       "country": "Norway", 
       "local_wage": "3200", 
       "wage": "378", 
       "exchange": "9.57" 
     }, { 
      "country_id": 3, 
       "country": "Austria", 
       "local_wage": "290", 
       "wage": "337", 
       "exchange": "0.87" 
     }]; 


    } else if (selectedValue == "job_2") { 

     country_data = [{ 
      "country_id": 1, 
       "country": "Luxembourg", 
       "local_wage": "874", 
       "wage": "654", 
       "exchange": "0.24" 
     }, { 
      "country_id": 2, 
       "country": "Norway", 
       "local_wage": "741", 
       "wage": "365", 
       "exchange": "4.77" 
     }, { 
      "country_id": 3, 
       "country": "Austria", 
       "local_wage": "854", 
       "wage": "634", 
       "exchange": "0.43" 
     }]; 


    } else if (selectedValue == "job_3") { 

     country_data = [{ 
      "country_id": 1, 
       "country": "Luxembourg", 
       "local_wage": "854", 
       "wage": "985", 
       "exchange": "0.25" 
     }, { 
      "country_id": 2, 
       "country": "Norway", 
       "local_wage": "645", 
       "wage": "874", 
       "exchange": "5.55" 
     }, { 
      "country_id": 3, 
       "country": "Austria", 
       "local_wage": "201", 
       "wage": "256", 
       "exchange": "0.78" 
     }]; 

    } 
}).change(); 

У меня также есть функция, которая использует .each для доступа к выбранным данным массива, однако я не могу показаться, чтобы получить его, чтобы получить доступ к данным в пределах выбранного массива JSON.

//variable country_data below wont access the selected array 
    $.each(country_data, function(i) { 
         var regEx = new RegExp('^' + searchStr + '\\w*\\b','i'); 

         if (country_data[i].country.match(regEx) || 
          (i == 3 && searchStr.toLowerCase() == "us") || 
          (i == 4 && ((searchStr.toLowerCase() == "uk") || 
             ("Great Britain".match(regEx)) || 
             ("Britain".match(regEx)) || 
             ("England".match(regEx)) || 
             ("Wales".match(regEx)) || 
             ("Scotland".match(regEx)) || 
             ("Northern Ireland".match(regEx)) 
             ) 
          ) 
          ) 
              $suggestionList.append('<li class="country_result" role="option"><a href="#'+country_data[i].country_id+'">' + country_data[i].country + '</a></li>'); 

         if (country_data[i].country.toLowerCase() === searchStr.toLowerCase()) { 
          exactMatch = true; 
          select_current_country(i+1); 
          return; 
         } 
        }); 

Я получаю сообщение об ошибке «Невозможно прочитать длину свойства« неопределенного ». Как мне изменить функцию .each, чтобы я мог получить доступ к данным объекта? Любая помощь действительно ценится! Спасибо

ответ

0

Потому что ваша переменная country_data будет не определена, когда скрипт запускается первым. Не используйте переключатель использования ifelse.

Смежные вопросы