Таким образом, когда вы выполняете некоторые вещи JavaScript с тегом <a />
, а также, если вы также ставите href="#"
, вы можете добавить return false в конце события (в случай привязки встроенного события) как:
<a href="#" onclick="myJsFunc(); return false;">Run JavaScript Code</a>
Или вы можете изменить атрибут href с помощью JavaScript, например:
<a href="javascript://" onclick="myJsFunc();">Run JavaScript Code</a>
или
<a href="javascript:void(0)" onclick="myJsFunc();">Run JavaScript Code</a>
Но семантически все вышеперечисленные способы достижения этого неверны (хотя работает нормально) . Если какой-либо элемент не создан для навигации по странице и с ней связаны некоторые вещи JavaScript, то он не должен быть тегом <a>
.
Вместо этого вы можете просто использовать <button />
для выполнения каких-либо действий или любых других элементов, таких как b, span или что-то еще, что вам нужно, поскольку вам разрешено добавлять события на все элементы.
Итак, есть одно преимущество для использования <a href="#">
. Вы получаете указатель курсора по умолчанию на этом элементе, когда делаете a href="#"
. Для этого, я думаю, вы можете использовать CSS для этого, например cursor:pointer;
, который также решает эту проблему.
И, наконец, если вы связываете событие с самим кодом JavaScript, вы можете сделать event.preventDefault()
, чтобы добиться этого, если вы используете тег <a>
, но если вы не используете тег <a>
для этого вы получаете преимущество, вам не нужно этого делать.
Так что, если вы видите, лучше не использовать тег для такого рода вещей.