Подтвердить что ты не робот

Что такое "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, я получу предупреждение.

Итак, вопрос: что происходит? клик не является зарезервированным словом или существующим символом

4b9b3361

Ответ 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);