Какая разница между <a onclick= "someFunction" >и <a onclick= "someFunction()" >
какая разница между
<a onclick="someFunction">
и
<a onclick="someFunction()">
Один использует скобки, а не другую, но каковы различия в использовании? Что такое "правильный" вариант? И что произойдет, если я не использую атрибут href
?
Насколько я знаю, в javascript использование something = someFunc();
присваивает возвращаемое значение этой функции переменной something
. И используя something = someFunc;
назначает функцию напрямую (а не ее результат) этой переменной (И в основном она используется для назначения функций событиям). например Я могу назначить функцию событию onclick.
Но то, что я не понимаю, это то, что происходит при использовании либо в каком-то некотором html-элементе inline-событии, как в примерах, поскольку присваивание не относится к переменной javascript, а к атрибуту html, который, случается, является событием? Пожалуйста, объясните.
А также существует ли разница в назначении встроенной функции onclick привязке (a
) к другим элементам (например, span div label
и т.д.)? У них такой же эффект?
Sidenote:
Я читал здесь о том, как запускать функцию при нажатии на ссылку, и я уже понял, что это не должно быть сделано "inline", но вместо этого ненавязчивый javascript. (Я упоминаю об этом, чтобы не обсуждать это), но в примерах, которые я видел, они не упоминают разницу в обоих вариантах, о которых я упоминаю, когда делаю это inline.
Изменить: этот вопрос был сделан, потому что здесь они дали ответ, который не использует скобки в функции для события, и никто не упоминал скобки, поэтому я предполагаю, что это действительно. но я не знаю, в чем отличие использования ()
или нет.
Ответы
Ответ 1
Один использует скобки, а не другую, но каковы различия в использовании?
<a onclick="someFunction">
ничего не сделает. Скобки вызывают функцию, которую нужно вызвать.
Имея оператор, состоящий из ничего, кроме идентификатора (будь то имя функции, переменная или что-то еще), ничего не сделает (за исключением того, что вывести ссылочную ошибку, если переменная не существует).
И что произойдет, если я не использую атрибут href?
Тогда я бы поставил под вопрос, почему вы использовали элемент <a>
.
А также существует ли разница в назначении встроенной функции onclick привязке (a) к другим элементам (например, метка span div и т.д.)?
Только то, что они не являются (по умолчанию) фокусируемыми элементами (и не является элементом без атрибута href), поэтому событие клика не может быть вызвано путем табуляции на элемент и нажатия клавиши ввода. Если вам нужен элемент, который будет делать что-то с JS при запуске, и у вас нет разумного резерва, когда JS недоступен, используйте кнопку.
Ответ 2
Значение атрибута обработчика события - это последовательность операторов Javascript , а не выражение.
Это свойство не присваивает значение функции; это кусок кода для выполнения на этом мероприятии.
Оставляя круглые скобки, результат в выражении выражения не имеет эффекта.
Ответ 3
при написании встроенных функций щелчка мы назначаем код, который будет выполняться в форме строки при щелчке элемента.
Это эквивалентно eval ('someFunction()');
мы не можем писать на click = 'someFunction', поскольку он будет эквивалентен eval ('someFunction'), который ничего не сделает.
если вы намерены привязать обработчик кликов к тегу привязки, не забудьте добавить атрибут href= '#' в тег привязки.
Нет никакой разницы между назначением обработчика кликов для span или divs по сравнению с тегом привязки.