Что такое click () в JavaScript - PullRequest
       15

Что такое click () в JavaScript

25 голосов
/ 05 февраля 2010

Я играл с JavaScript в FireFox и столкнулся с проблемой, которая проиллюстрирована в следующем примере:

<HEAD>
<script type="text/javascript">
function click()
{
    alert("click");
}

</script>
</HEAD>

<BODY>

<input type="radio" onclick="click()">
</BODY>

Когда я нажимаю переключатель, ничего не происходит, и никаких ошибок (в Firebug)

Если я поменяю имя функции на do_click и поменяю onclick, то получу предупреждение.

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

Ответы [ 5 ]

37 голосов
/ 05 февраля 2010

Код внутри встроенных обработчиков событий ограничен элементом, как если бы он был в блоке with.

Следовательно, в обработчике onclick имя click разрешается в методе click элемента.

Это можно продемонстрировать , написав alert(nodeName) в обработчике

8 голосов
/ 05 февраля 2010

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

0 голосов
/ 05 февраля 2010

«щелчок» сам по себе НЕ является javascript зарезервированным ключевым словом вне контекста встроенного обработчика событий, как ответил Слакс.

То есть метод "click", определенный в вопросе, действителен. Присоединение обработчика событий «извне» будет работать. Например. используя jQuery:

$('input').click(click);
0 голосов
/ 05 февраля 2010

Я думаю, что метод click () в javascript имитирует нажатие кнопки.Так что это должен быть своего рода бесконечный цикл ...

Отредактировано, чтобы добавить: Проверьте MSDN для документации метода click

0 голосов
/ 05 февраля 2010

Я думаю, что click () - это зарезервированное имя процедуры, поэтому вы не можете перезаписать его. Объясняет, почему изменение имени и ничего больше не дает ему работать.

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