Вызывающий событие Javascript не передается в params - PullRequest
1 голос
/ 23 марта 2009

Я работаю над следующей функцией onmouseover в javascript

function fnNavMouseOver(evt) {
    alert(evt.target);
    var eSrc
    evt = (evt) ? evt : (window.event) ? window.event : ""
    eSrc = (evt.target) ? evt.target : evt.srcElement
    alert(eSrc);
}

У меня сложилось впечатление, что в Firefox событие должно быть передано в функцию. Однако кажется, что evt не имеет значения. Есть ли что-нибудь, что может быть причиной этого?

Редактировать:

Код, вызывающий этот метод, работает следующим образом

ButtonHTML += "<img onmouseover='fnNavMouseOver()' id='" + ButtonId + "Norm' src='" + ImgPath + "_n.jpg' style='border-style:none;z-index=102;position:absolute;left:0px;top:0px'>";

Эта строка затем добавляется в div на странице. Я понимаю, что это на самом деле не идеально, но я работаю со старой платформой и пытаюсь использовать некоторые новые функции

Ответы [ 2 ]

2 голосов
/ 23 марта 2009

Если вы установите обработчик события mouseover вне элемента HTML, я думаю, вы получите событие, переданное вашей функции.

При использовании вы, по сути, делаете это:

element.onmouseover = function () { yourfunction() };

вместо этого:

element.onmouseover = yourfunction

это то, что вы хотите сделать . Поскольку вы вызываете свою функцию без аргументов, она не получает аргументов, что приводит к передаче значений Null.

1 голос
/ 23 марта 2009

Я согласен с ответом относительно ненавязчивого назначения обработчика событий, но для чего бы это ни стоило, вы можете продолжить использовать атрибут onmouseover HTML, передав объект события в качестве параметра ...

onmouseover="fnNavMouseOver(event);"
...