Что такое "click()" в JavaScript
Я играл с JavaScript в FireFox и сталкивался с проблемой, которая проиллюстрирована в следующем примере:
<HEAD>
<script type="text/javascript">
function click()
{
alert("click");
}
</script>
</HEAD>
<BODY>
<input type="radio" onclick="click()">
</BODY>
Когда я нажимаю на переключатель, ничего не происходит, и никаких ошибок (в Firebug)
Если я изменил имя функции на do_click и изменил onclick, я получу предупреждение.
Итак, вопрос: что происходит? клик не является зарезервированным словом или существующим символом
Ответы
Ответ 1
Код внутри встроенных обработчиков событий привязан к элементу, как если бы он находился в блоке with
.
Следовательно, в обработчике onclick
имя click
разрешается методу click
.
Это может быть продемонстрировано, написав alert(nodeName)
в обработчике
Ответ 2
Элементы DOM имеют собственный метод click().
Ниже показано, что щелчок является собственным методом:
<input type="radio" onclick="alert(click.toString())">
Вы можете зарегистрировать функцию щелчка как обработчик события следующим образом. Внутри обработчика this
будет ссылаться на элемент HTML.
<input type="radio" id="foo" >
function click()
{
alert("click");
}
document.getElementById('foo').onclick = click;
Существует прекрасная серия статей о событиях браузера в http://www.quirksmode.org/js/introevents.html
Ответ 3
Я думаю, что click() - это зарезервированное имя процедуры, поэтому вы не можете перезаписать его. Объясняет, почему изменение имени, и ничто другое не заставляет его работать.
Ответ 4
Я думаю, что метод click() в javascript имитирует нажатие кнопки. Так что это должен быть своего рода бесконечный цикл...
Отредактировано для добавления: MSDN для документирования метода щелчка
Ответ 5
'click' сам по себе НЕ является javascript зарезервированное ключевое слово вне контекста встроенного обработчика событий, когда ответили Slaks.
То есть метод "click", определенный в вопросе, действителен. Прикрепление обработчика событий "извне" будет работать. Например. с помощью jQuery:
$('input').click(click);