Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   select динамически onchange не работает в ie (https://javascript.ru/forum/events/2249-select-dinamicheski-onchange-ne-rabotaet-v-ie.html)

Gozar 26.11.2008 22:56

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

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

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

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

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

ie6,7,8

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

куда копать?

ps:FF и Opera все ок

Kolyaj 26.11.2008 23:09

Код с созданием селекта.

Gozar 26.11.2008 23:16

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');
}

не думаю что в этом проблема и это хоть что-нибудь даст

Gozar 26.11.2008 23:19

дело не в функция, а в том что ошибки ie не выдает и события на динамически созданный объект не реагируют

Gozar 26.11.2008 23:29

еще одно: option формируется из ответа на ajax запрос, второй!

Octane 26.11.2008 23:30

Какая-то у вас извращенная работа с 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;

Gozar 26.11.2008 23:38

спасибо за:
newItem.onchange = function() {
ListMenuSelected(i);
};
попробую, похоже нужно менять стиль, надеюсь это поможет

Kolyaj 26.11.2008 23:58

Цитата:

Сообщение от Gozar
дело не в функция, а в том что ошибки ie не выдает и события на динамически созданный объект не реагируют

http://xpoint.ru/know-how/JavaScript/Atributyi?8

Gozar 27.11.2008 11:28

Спасибо за ссылку, как я понял ie пишет в атрибут текст и чтобы все заработало в нем надо написать подобие этого:
inputTag.setAttribute("onclick", function() {alert('clicked')});

Kolyaj 27.11.2008 11:29

Не надо никакого setAttribute.


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