Разница в обработке ссылок на объекты javascript в IE и других браузерах

#javascript #json #internet-explorer #object

#javascript #json #internet-explorer #объект

Вопрос:

В FireFox и Chrome я могу ссылаться на значения объектов как таковые:

 key = value[0].name  
  

Но это приводит к ошибке в IE 8, когда «значение[0].name» равно нулю.
Есть идеи, почему это происходит?

Полный код:

      $.each(data, function(key, value){
         key = value[0].name.replace(' ', '');
         var original = $('.' key 'Link').attr('href');
         var updated = original   'amp;browseItem=' (this[0]).id;
         $('.' key 'Link').attr('href', updated);
      });
  

и идентификатор «data» объекта, производного от строки JSON:

     [[{"name": "Due", "id": 9}], [{"name": "Fine", "id": 10}], [{"name": "Property Lien", "id": 11}]]
  

Редактировать:
Похоже, что это была проблема с кэшированием. Спасибо за все ответы.

Комментарии:

1. Уверены ли вы, что объект «данные» выглядит именно так? Если бы это было так, этот код отлично работал бы в IE8.

2. Что alert(JSON.stringify(value)) отображается в IE8?

3. У меня работает в IE8. Проверьте: jsfiddle.net/4GxGG/1

4. Еще раз спасибо за все ответы.

Ответ №1:

Попробуйте:

 key = (value[0] || value).name.replace(' ', '');
  

Похоже, value это уже тот элемент массива, который вам нужен