Не работает onchange в javascript

tommy-gung
На сайте с 22.11.2006
Offline
277
6499

Вечер добрый.

есть код списка. При выборе страны меняется "страна" и "код" на странице


<script language="javascript" type="text/javascript">
var countries = new Array();
countries['ru'] = new Array();
countries['ru']['country'] = "Россия";
countries['ru']['code'] = "code1";

countries['ua'] = new Array();
countries['ua']['country'] = "Украина";
countries['ua']['code'] = "code2";

function get_code(ind) {
country = document.pays.country[ind].value;
document.getElementById('country').value = 'Страна - ' + countries[country]['country'] + '.';
document.getElementById('code').innerHTML = countries[country]['code'];
}
</script>
<p>
Выберите страну
</p>
<p>
<form name="pays">
<select name="country" onChange="javascript: get_code(this.selectedIndex);">
<option value="ru">Россия</option>
<option value="ua">Украина</option>
<!--
еще десяток стран
-->
</select>
</form>
</p>
<p id="country">
Страна - Россия.
</p>
<p>
<span id="code">code1</span>
</p>

в лисе и опере все работает, а в ие - нет ((

где искать ошибку?

Здесь не могла быть ваша реклама
ixRock
На сайте с 14.11.2006
Offline
46
#1

onChange="get_code(this.selectedIndex);"

псевдопротокол "javascript:" используется только в адресах, типа href - и вообще его использование это дурной тон, лучше забудьте о нем :)

Работаю [S]за еду и секас[/S] с XHTML, CSS, XSLT, JS, PHP. Если что, вот тут (http://www.mintdesign.ru/) некоторые мои работы. Контакты: ася 344-ноль86-276, мыло ixrock@gmail.com
F4
На сайте с 24.01.2009
Offline
31
#2

Немного исправил


<script language="javascript" type="text/javascript">
var countries = new Array();
countries['ru'] = new Array();
countries['ru']['country'] = "Россия";
countries['ru']['code'] = "code1";

countries['ua'] = new Array();
countries['ua']['country'] = "Украина";
countries['ua']['code'] = "code2";

function get_code(ind) {
o=ind.options[ind.selectedIndex].value;
document.getElementById('country').innerHTML = 'Страна - ' + countries[o]['country'] + '.';
document.getElementById('code').innerHTML = countries[o]['code'];
}
</script>
<p>
Выберите страну
</p>
<p>
<form name="pays">
<select name="country1" id="country_s" onChange="get_code(this)">
<option value="ru">Россия</option>
<option value="ua">Украина</option>
</select>
</form>
</p>
<p id="country">
Страна - Россия.
</p>
<p>
<span id="code">code1</span>
</p>
web09
На сайте с 11.02.2010
Offline
10
#3

Еще возможна ситуация когда onchange не срабатывает если поле изменяется при помощи скрипта какого. Но для ситуации этой есть решение

Сбор контента, наполнение магазинов (/ru/forum/460538) Настройка и администрирование Joomla, DLE, WP. Магазинов Webassyst, Opencart, Virtuemart. Форумов. PHP, MYSQL, javascript. Связь - личка или icq 355-557-338
tommy-gung
На сайте с 22.11.2006
Offline
277
#4

ixRock, спасибо. Но, к сожалению, не помогло :-(

ixRock
На сайте с 14.11.2006
Offline
46
#5
tommy-gung:
ixRock, спасибо. Но, к сожалению, не помогло :-(

странно, но это первое что бросалось в глаза в коде.. ща найдем ошибку! :)

tommy-gung
На сайте с 22.11.2006
Offline
277
#6
FILA44:
Немного исправил

спасибо, заработало :-)

ixRock
На сайте с 14.11.2006
Offline
46
#7

Хоть и заработало, приведу свой вариант:


<script type="text/javascript">
var countries = {
'ru': {
'country': 'Россия',
'code': 1
},
'ua': {
'country': 'Украина',
'code': 2
}
}

function updateCountry( obj )
{
document.getElementById('country').innerHTML = countries[obj.value].country;
document.getElementById('code').innerHTML = countries[obj.value].code;
}

</script>
<p> Выберите страну </p>
<p>
<form name="pays">
<select name="country" onchange="updateCountry(this)">
<option value="ru">Россия</option>
<option value="ua">Украина</option>
</select>
</form>
</p>
<p id="country"> Страна - Россия. </p>
<p> <span id="code">code1</span> </p>

И к слову, в JS нету ассоциативных массивов. Это просто доступ к объектам {} при помощи квадратных скобок.

tommy-gung
На сайте с 22.11.2006
Offline
277
#8

ixRock, замечательно. Хороший, а главное, понятный пример :)

Сохраню на будущее

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий