Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.11.2008, 22:56
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

select динамически onchange не работает в ie
Привет!

по клику(кнопка, ссылка) выполняется функция, которая динамически добавляет в DOM элемент select с атрибутом onchange="SelectedAny('атрибут')" ну и соот-но option список

атрибут - это цифра(0,1 ...)

Следствие: onchahge="SelectedAny('атрибут')" не срабатывает в IE, действие не происходит никакого(ошибок не выдает, проверено в дебаггерах)

Вопрос: onchange в ie не работает с динамически созданными элементами?

ie6,7,8

собственно по onchange не происходит вызов функции SelectedAny(),

куда копать?

ps:FF и Opera все ок

Последний раз редактировалось Gozar, 26.11.2008 в 22:58.
Ответить с цитированием
  #2 (permalink)  
Старый 26.11.2008, 23:09
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Код с созданием селекта.
Ответить с цитированием
  #3 (permalink)  
Старый 26.11.2008, 23:16
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

function ListMenu(arr_en){
for(var i=0;i<arr_en.length;i++){
newItem = document.createElement("SPAN");
newItem.innerHTML = a_list[arr_en[i]]+': ';
document.getElementById('listmenu').appendChild(ne wItem);

newItem = document.createElement("SELECT");
newItem.innerHTML = '';
document.getElementById('listmenu').appendChild(ne wItem);

attr = document.createAttribute('id');
attr.nodeValue = 'lm'+i;
newItem.setAttributeNode(attr);

attr = document.createAttribute('name');
attr.nodeValue = arr_en[i];
newItem.setAttributeNode(attr);

var next;
(arr_en[i+1])?next=arr_en[i+1]:next='0';

attr = document.createAttribute('onchange');
attr.nodeValue = 'ListMenuSelected("'+i+'")';
newItem.setAttributeNode(attr);
}
ListOptions('listmenu',arr_en[0],'lm0');
}

не думаю что в этом проблема и это хоть что-нибудь даст
Ответить с цитированием
  #4 (permalink)  
Старый 26.11.2008, 23:19
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

дело не в функция, а в том что ошибки ie не выдает и события на динамически созданный объект не реагируют
Ответить с цитированием
  #5 (permalink)  
Старый 26.11.2008, 23:29
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

еще одно: option формируется из ответа на ajax запрос, второй!
Ответить с цитированием
  #6 (permalink)  
Старый 26.11.2008, 23:30
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Какая-то у вас извращенная работа с DOM, живите проще:
newItem = document.createElement('select');
newItem.id = 'lm' + i;
newItem.name = arr_en[i];
newItem.onchange = function() {
    ListMenuSelected(i);
};

Возможно из-за эти всяких setAttributeNode и не работает

Ну и вывернули же вы тернарный оператор
var next;
(arr_en[i+1])?next=arr_en[i+1]:next='0';

Лучше будет написать так
var next = arr_en[i + 1] ? arr_en[i + 1] : 0;

или даже так
var next = arr_en[i + 1] || 0;
Ответить с цитированием
  #7 (permalink)  
Старый 26.11.2008, 23:38
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

спасибо за:
newItem.onchange = function() {
ListMenuSelected(i);
};
попробую, похоже нужно менять стиль, надеюсь это поможет
Ответить с цитированием
  #8 (permalink)  
Старый 26.11.2008, 23:58
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Gozar
дело не в функция, а в том что ошибки ie не выдает и события на динамически созданный объект не реагируют
http://xpoint.ru/know-how/JavaScript/Atributyi?8
Ответить с цитированием
  #9 (permalink)  
Старый 27.11.2008, 11:28
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Спасибо за ссылку, как я понял ie пишет в атрибут текст и чтобы все заработало в нем надо написать подобие этого:
inputTag.setAttribute("onclick", function() {alert('clicked')});
Ответить с цитированием
  #10 (permalink)  
Старый 27.11.2008, 11:29
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Не надо никакого setAttribute.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работает в Mozilla и не работает в IE Maxidrom Events/DOM/Window 4 27.02.2010 16:37
Динамически создаваемые компоненты Drag&Drop BEER_HUNTER Элементы интерфейса 6 22.08.2008 13:32
В IE не работает динамическое изменение colspan, нужна помощь! Extasy Общие вопросы Javascript 8 17.08.2008 11:55
Код не работает в седьмом Эксплорере... vol4ara Общие вопросы Javascript 0 14.07.2008 18:53
Динамическое обновление списка Select Fender Events/DOM/Window 3 12.06.2008 21:30