Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.08.2011, 13:12
Новичок на форуме
Отправить личное сообщение для TheKIP Посмотреть профиль Найти все сообщения от TheKIP
 
Регистрация: 05.08.2011
Сообщений: 6

Доступ к элементам многомерного массива
Есть скрипт калькулятора рассчроки для автосалона.
Основным варьирующимся параметром является срок на который доступна рассрочка. Варьируется он от модели автомобиля, его цены, и процентного соотношения первого взноса к общей сумме.

Самым простым способ я решил использовать многомерный массив примерной такой структуры:

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/
Ответить с цитированием
  #2 (permalink)  
Старый 05.08.2011, 13:24
Аспирант
Отправить личное сообщение для lalala Посмотреть профиль Найти все сообщения от lalala
 
Регистрация: 04.03.2011
Сообщений: 87

потому что нет там такого
Ответить с цитированием
  #3 (permalink)  
Старый 05.08.2011, 13:32
Аватар для SkyLight
Злюка-бобер
Отправить личное сообщение для SkyLight Посмотреть профиль Найти все сообщения от SkyLight
 
Регистрация: 21.03.2010
Сообщений: 438

Вы проверяете, определено ли period[car][price_group][percent], а у вас неопределено даже period[car][price_group]. Соответственно, вы проверяете элемент несуществующего объекта, что и вызывает ошибку.
__________________
In WEB We Trust
У всех есть своя темная сторона...
Ответить с цитированием
  #4 (permalink)  
Старый 05.08.2011, 13:33
Новичок на форуме
Отправить личное сообщение для TheKIP Посмотреть профиль Найти все сообщения от TheKIP
 
Регистрация: 05.08.2011
Сообщений: 6

да ясно и так, так вот как мне ловить эту ошибку, что бы выполнение скрипта не останавливалось?
Ответить с цитированием
  #5 (permalink)  
Старый 05.08.2011, 13:34
Новичок на форуме
Отправить личное сообщение для TheKIP Посмотреть профиль Найти все сообщения от TheKIP
 
Регистрация: 05.08.2011
Сообщений: 6

SkyLight,
Мысль понял, сейчас попробую добавить эту проверку
Ответить с цитированием
  #6 (permalink)  
Старый 05.08.2011, 13:38
Аспирант
Отправить личное сообщение для lalala Посмотреть профиль Найти все сообщения от lalala
 
Регистрация: 04.03.2011
Сообщений: 87

SkyLight,
даже разжевал, осталось только в рот положить )))
Ответить с цитированием
  #7 (permalink)  
Старый 05.08.2011, 13:41
Новичок на форуме
Отправить личное сообщение для TheKIP Посмотреть профиль Найти все сообщения от TheKIP
 
Регистрация: 05.08.2011
Сообщений: 6

Все сделал. Разумеется теперь работает нормально.
Мне просто нужно было понять именно этот принцип, я сам пришел с пхп, там немного по другому, там бы парсер не стал бы орать про ошибку, а просто условие приняло бы значение false и все продолжилось бы по запланированному сценарию.
Ответить с цитированием
  #8 (permalink)  
Старый 05.08.2011, 14:46
Аватар для SkyLight
Злюка-бобер
Отправить личное сообщение для SkyLight Посмотреть профиль Найти все сообщения от SkyLight
 
Регистрация: 21.03.2010
Сообщений: 438

Есть мнение, что даже пхп ругнулся бы, если бы вы попытались обратиться к свойству/методу несуществующего объекта. То же самое и здесь.
__________________
In WEB We Trust
У всех есть своя темная сторона...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как при переборе массива к выбранным элементам присвоить тип - число Rich Общие вопросы Javascript 1 27.03.2011 13:09
Как получиться доступ к элементам не своей страницы? AlkaLoiD Общие вопросы Javascript 4 29.11.2010 12:47
Доступ к элементам Git Элементы интерфейса 3 20.03.2010 19:26
Доступ к элементам с нетривиальными id shulya jQuery 7 12.02.2010 21:41
Можно ли как для произвольного массива создавать вызовы функций , имеющих на входе kefi Общие вопросы Javascript 3 17.04.2009 16:53