Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Не работает в експлоере обращение к массиву (https://javascript.ru/forum/css-html/13243-ne-rabotaet-v-eksploere-obrashhenie-k-massivu.html)

vitaliy11 22.11.2010 14:32

Не работает в експлоере обращение к массиву
 
(в опере и файерфокс работает)

На сайте цена отображается в зависимости от выбранных параметров, которые определюятся радиобатонами. Если произошло изменение то вызывается джаваскрипт функция, котора меняет цену.

Вот такие данные:

1. Примерный объект (был массив, но прочитал что для ассоициативных лучше использовать объекты) - количество ламп - материал - цена:

<SCRIPT language=JavaScript type=text/javascript>
	var ar_price= new Object(); ar_price["1"]= {}; ar_price["1"][114]=4277; ar_price["1"][116]=5941; ar_price["1"][115]=4823; ar_price["1"][117]=6097;  var ar_presencel= new Object(); ar_presencel["1"]= {}; ar_presencel["1"][114]='В наличии'; ar_presencel["1"][116]='В наличии'; ar_presencel["1"][115]='Под заказ'; ar_presencel["1"][117]='Под заказ'; 
	</script>


2. Функция

<SCRIPT language=JavaScript type=text/javascript>
	function priceView()
	{
	var price_view=1; 
	numpf=document.forms["fprice"].hnump.value;
	materialf=document.forms["fprice"].hmaterial.value;
	//alert(materialf);
	//numpf=document.getElementById('fprice').hnump.value;
	//materialf=document.getElementById('fprice').hmaterial.value;
	price=ar_price[numpf][materialf];
	presencel=ar_presencel[numpf][materialf];
	//alert(price);
		if(price==undefined)
		{price='не указано';}
		else
		{price=price+' грн.';}
		if(presencel==undefined)
		{presencel='нет позиции';}
				
		if(price_view==1)
		{
		document.getElementById('price').innerHTML=price;
		}
	document.getElementById('presencel').innerHTML=presencel;
	//alert(price);
	return false;
	}
	</script>


3. Ошибку выдает на строчку:

price=ar_price[numpf][materialf];

Объект не поддерживает это свойство или метод

Если кто знает - подскажите пожалуйста как его сделать

рони 22.11.2010 15:48

vitaliy11,
Не используйте одинаковые id и названия глобальных переменных или добавьте var
var price=ar_price[numpf][materialf];
var presencel=ar_presencel[numpf][materialf];

vitaliy11 22.11.2010 16:11

Спасибо за ответ!

var немного помогло
насчет id не понял

Теперь ошибки не выдает, но работает в эксплоере не правильно:
при переключении радиобаттона не всякий раз срабатывает и цену выдает не его (даже если выдавать alert, то не каждый раз срабатывает).

В массиве идет с кавычками (ar_price["1"]) пробовал вот здесь обращаться и с кавычками и без (var price=ar_price[numpf][materialf];)
В опере и так и так работает, а в эксплоере никак.

Можете еще дать совет?

P.S. На радиобаттоне стоит:

onchange="document.forms['fprice'].hmaterial.value=this.value; return priceView();"

рони 22.11.2010 22:20

Цитата:

Сообщение от vitaliy11
насчет id не понял

Цитата:

Сообщение от vitaliy11
price=ar_price[numpf][materialf];

Цитата:

Сообщение от vitaliy11
document.getElementById('price').innerHTML=price;

Цитата:

Сообщение от рони
Не используйте одинаковые id и названия глобальных переменных или добавьте var

Цитата:

Сообщение от vitaliy11
Можете еще дать совет?

А где неработающий код примера, а не вырванные из контекста строки?


Часовой пояс GMT +3, время: 09:18.