Когда вы делаете это:
<div onclick="fname();">
Вы не назначаете fname
в качестве обработчика событий, вы звоните fname
из в пределах ваш обработчик событий (который является анонимной функцией, созданной для вас).Таким образом, ваш первый параметр - это то, что вы передаете в fname
, и в указанном вами коде вы ничего не передаете в него.
Вы бы хотели:
<div onclick="fname(event);">
Но дажеэто не будет надежным, потому что предполагается, что либо автоматически сгенерированная анонимная функция принимает параметр event
с именем event
, либо вы используете IE или браузер, который делает вещи, подобные IE, и выглядя на глобальное свойство window.event
IE.
Более надежная вещь, которую нужно сделать, это:
<div onclick="return fname();">
... и имеют fname
return false
, если он хочет обаостановите распространение и предотвратите действие браузера по умолчанию.
Все это, почему я настоятельно рекомендую всегда использовать методы DOM2 (addEventListener
, то есть attachEvent
- с немного другими аргументами - в IE до IE9) для перехватаобработчики, если вы хотите сделать что-нибудь интересное в этом событии (или 9 раз из 10, даже если вы этого не сделаете).
Не по теме : И этовся территория является одной из причин, я рекомендую использовать библиотекунапример, jQuery , Прототип , YUI , Закрытие или любой из нескольких других для сглаживания различий браузера дляВы, так что вы можете сосредоточиться на своей работе.