Javascript не отвечает на щелчок элемента? - PullRequest
0 голосов
/ 28 ноября 2011

Это часть кода, о которой идет речь:

       ...     
        var btnClick = document.getElementById("button");
        btnClick .addEventListener("click", func, false);
    }
    function func()
    {
        alert("This works");
    }

Я не получаю никаких предупреждений. Видите какие-нибудь проблемы?

Ответы [ 4 ]

1 голос
/ 28 ноября 2011

Какой браузер вы используете?IE не поддерживает .addEventListener() до версии 9, поэтому вы должны сказать что-то вроде этого:

var btnClick = document.getElementById("button");

if (btnClick.addEventListener){
  btnClick.addEventListener('click', func, false); 
} else if (btnClick.attachEvent){
  btnClick.attachEvent('onclick', func);
}
// and if you're really keen:
else {
  btnClick.onclick = func;
}

И не используйте .getElementById() для элемента, который еще не был проанализирован, т.е.поместите приведенный выше код либо в document.ready, либо загрузите обработчик события, либо поместите его после элемента в источнике страницы.

0 голосов
/ 28 ноября 2011

Никогда не используйте очень общие термины, такие как «кнопка», так как они, как правило, зарезервированы, и вы в конечном итоге вырвете свои волосы, если будете абсолютно уверены, что это должно сработать.Используйте описательные значения для атрибутов id, таких как 'form_4_button_submit'.

Также пример того, как выполнять кросс-браузерную обработку событий ...

if (window.addEventListener) {document.addEventListener('keydown',keyPressed,false);}
else {document.attachEvent('onkeydown',keyPressed);}

function keyPressed(evt)
{
 var e = evt || event;
 var key = e.which || e.keyCode;

 switch (key)
 {
  case 77:// M
  alert('m key pressed');
  break;

  case 76://L
  alert('L key pressed');
  break;
 }
}
0 голосов
/ 28 ноября 2011

Это по той причине, что вы не инициализировали его .... !!!

window.onload = prepareButton;

function prepareButton()
{
    document.getElementById('button').onclick = function()
    {
        alert('you clicked me!');
    }
}
0 голосов
/ 28 ноября 2011

Если вы выполните все следующие действия, это будет работать:

  1. Подождите, пока документ загрузится, прежде чем пытаться установить прослушиватель событий. Вы можете запустить этот код в обработчике window.onload или поместить код инициализации JavaScript в конец тела. Вы можете проверить, если это работает или не работает, посмотрев, является ли btnClick действительным или нулевым.
  2. Запускайте этот код только в новых браузерах, поддерживающих addEventListener (старые версии IE не поддерживают это).
  3. Убедитесь, что на странице есть один-единственный элемент с id="button".
  4. Убедитесь, что на вашей странице нет ошибок JavaScript, из-за которых ваш скрипт перестает работать.
  5. Удалить пробел после btnClick до .addEventListener.

Вы можете увидеть, как это работает здесь: http://jsfiddle.net/jfriend00/HQ24Z/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...