2012-10-21 3 views
0

Созданное выпадающее меню работает в Firefox и IE, но не в Google Chrome. У меня естьраскрывающееся меню javascript, не работающее с Chrome (событие?)

function characterList(){ 
    //code removed that generates select list 
    var optionContainer = document.createElement("option"); 
    optionContainer.innerHTML = "Show All Character Lines"; 
    addEvent(optionContainer, "click", filterChar, false); 
    selectContainer.appendChild(optionContainer); //appends option to select menu 

    for (var i = 0; i < menu_lines; i++){ 
     var optionContainer1 = document.createElement("option"); 
     optionContainer1.innerHTML = "blah" //simplified so that names in menu are all "blah" 
     selectContainer.appendChild(optionContainer1);//appends option to select menu 
     addEvent(optionContainer1, "click", filterChar, false);//I think the problem is here. 
    } 
} 

function filterChar(){ 
    alert("filterChar"); 
} 


function addEvent(object, evName, fnName, cap) { 
    if (object.attachEvent) 
     object.attachEvent("on" + evName, fnName); 
    else if (object.addEventListener) 
     object.addEventListener(evName, fnName, cap); 
} 

characterList заселяет в раскрывающемся меню (из выбора типа параметра) с именами, взятых из h3 заголовков в HTML-файл. Это прекрасно работает. Проблема заключается в том, что в Google Chrome filterChar не вызывается в раскрывающемся меню кликов. У меня есть функция, предоставленная мне (attachEvent), которая должна быть совместима со всеми браузерами. Пожалуйста, помогите кому-нибудь.

+0

Не могли бы вы минимизировать код при воспроизведении проблемы? – tobspr

+0

@Tobias Springer: Я попытался упростить его. Остается, в основном, создание каждого варианта создания. – user963070

+0

@ user963070 Хром должен точно сказать, в чем проблема в консоли javascript (элемент проверки F12 или rightclick>) – Stecman

ответ

0

Вам необходимо подключить один прослушиватель событий к вашему элементу select. Элементы Option не являются регулярными элементами DOM, поэтому прослушивание их onclick не работает.

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

addEvent(selectContainer, "change", filterChar, false); 

Вы можете получить ссылку на выбор в функции обратного вызова, используя объект события, передаваемый в качестве первого параметра:

function filterChar(e){ 
    var select = e.target; 
    alert("The selected item was index "+select.selectedIndex); 
} 
+0

Можете ли вы использовать «щелчок» вместо «изменить?»? Это сработало для меня. – user963070

+0

Да, и большинство [других типов событий] (http://www.w3.org/TR/REC-html40/interact/scripts.html#events). Используйте то, что подходит вашим потребностям. – Stecman

Смежные вопросы