Доступ к элементам многомерного массива
Есть скрипт калькулятора рассчроки для автосалона.
Основным варьирующимся параметром является срок на который доступна рассрочка. Варьируется он от модели автомобиля, его цены, и процентного соотношения первого взноса к общей сумме. Самым простым способ я решил использовать многомерный массив примерной такой структуры: period[car] = [ [ //цена от Х до Y {'12':'12 месяцев'},//30% {'12':'12 месяцев','18':'18 месяцев'},//40% {'12':'12 месяцев','18':'18 месяцев','24':'24 месяцев','30':'30 месяцев'}//50% ], [ "",//30% "", //40% {'12':'12 месяцев'} //50% ] //цена от Y до Z ] Для обращения к массиву я использую следующую функцию: if ((period[car][price_group][percent] != undefined)) { for(key in period[car][price_group][percent]) { html += '<option ' if (selected == key) {html += 'selected '} html += 'value="' + key + '">' + period[car][price_group][percent][key] + '</option>\n'; } } else { if ((jQuery('#car_price').val() > 0)&(jQuery('#first_payment').val() > 0)) select_warning = true; } return (html) Собсно проблема в строке period[car][price_group][percent] != undefined Когда значение действительно равно undefined, оно вываливает ошибку в консоль (period[car][price_group] is undefined), вместо того что бы продолжить выполняться по else. Посмотреть примерно на работу скрипта можно здесь: http://hyundai-yug-avto.ru/services/rassrochka/ |
потому что нет там такого
|
Вы проверяете, определено ли period[car][price_group][percent], а у вас неопределено даже period[car][price_group]. Соответственно, вы проверяете элемент несуществующего объекта, что и вызывает ошибку.
|
да ясно и так, так вот как мне ловить эту ошибку, что бы выполнение скрипта не останавливалось?
|
SkyLight,
Мысль понял, сейчас попробую добавить эту проверку |
SkyLight,
даже разжевал, осталось только в рот положить ))) |
Все сделал. Разумеется теперь работает нормально.
Мне просто нужно было понять именно этот принцип, я сам пришел с пхп, там немного по другому, там бы парсер не стал бы орать про ошибку, а просто условие приняло бы значение false и все продолжилось бы по запланированному сценарию. |
Есть мнение, что даже пхп ругнулся бы, если бы вы попытались обратиться к свойству/методу несуществующего объекта. То же самое и здесь.
|
Часовой пояс GMT +3, время: 17:58. |