IE9 onclick Ошибка? - PullRequest
       12

IE9 onclick Ошибка?

0 голосов
/ 22 марта 2011
this.fillSelectBox  = function (flowCounterObj)
{
    while (this.selectBox.hasChildNodes())
    {
        this.selectBox.removeChild(this.selectBox.firstChild);
    }
    var line = 0;
    for(line = 0; line < this.lines.length; line++)
    {
        var newOption = document.createElement('option');
        newOption.setAttribute('value','line_' + line);
        newOption.innerHTML = 'Line ' + line;
        newOption.onclick = function(){flowCounterObj.setCurrentLine(this.index);};
        this.selectBox.appendChild(newOption);
    }
};

Приведенный выше код удаляет все параметры из поля выбора и создает новый параметр для каждой строки в моем массиве.

Добавляет событие в клик.

Когда я выбираю свои параметры в Chrome, они вызывают функцию setCurrentLine (). Однако в IE9 это не так.

Я посмотрел на окна отладки в IE9 и Chrome, и они применяют одни и те же вещи.

Я пытался использовать setAttribute('onclick',flowCounter.setCurrentLine('+line+');');, но это не работает и в IE9 (в Chrome);

Я также пытался использовать addEventListener(...);, но это не работает в IE9 (в Chrome).

(Кстати, я должен на самом деле использовать для этого addEventListener? Это правильный путь?)

Я поместил код через JS lint, и он говорит, что я не должен создавать функции в циклах?

Есть идеи? Как вы думаете, это может быть ошибка?

Мэтт

РЕДАКТИРОВАТЬ : я попробовал следующий HTML-код в IE9:

<!DOCTYPE html>
<html>
<head>
</head>
<body>
    <select id='lineSelect' size='4'>
        <option value='line_1' onclick='alert("whoop");'>Line 1</option>
        <option value='line_2' onclick='alert("whoop");'>Line 2</option>
        <option value='line_3' onclick='alert("whoop");'>Line 3</option>
        <option value='line_4' onclick='alert("whoop");'>Line 4</option>
    </select>
</body>
</html>

И это ничего не делает? Делает в Chrome / Safari / Firefox / Opera! Также сделал это с помощью onClick / onChange.

Ответы [ 2 ]

2 голосов
/ 22 марта 2011

Я посмотрел на эту страницу MSDN , и кажется, что option не имеет события onclick. Однако у него есть событие onselect или onchange.

Я думаю, что использование события onclick или onchange самого selectbox является лучшим решением в этом случае.

0 голосов
/ 18 марта 2013

Также обратите внимание, что начиная с IE9, onclick больше не работает. onClick"чувствительно к регистру"

...