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

Javascript anchor избежать прокрутки вверху по щелчку

Я создал функцию в javascript, которую я добавляю к якорю как таковой

javascript:

somefunction = function () {alert('foo')}

html:

<a href="#" onclick="return somefunction()">anchor</a>

каждый раз, когда я нажимаю на якорь, функция выполняет, но экран прокручивается в начало

Я знаю, что могу это сделать

<a href="javascript:void(0)" onclick="return somefunction()">anchor</a>

но я видел первый вариант, реализованный без этой подсказки прокрутки вверх

есть ли какой-нибудь трюк?

Благодарю вас

4b9b3361

Ответ 1

Onclick заставляет страницу повторно отправить, поэтому прокручивается вверх.

Вам нужно событие onclick, чтобы вернуть false, чтобы избежать обратной передачи.

Это можно сделать, изменив функцию, чтобы вернуть false:

somefunction = function () {alert('foo'); return false;}

Или для изменения ссылки и события onClick для этого:

<a href="javascript:void(0)" onclick="somefunction(); return false;">anchor</a>

Ответ 2

Фокус в том, что ваш onclick возвращает значение somefunction, так что если вы убедитесь, что somefunction всегда return false, тогда событие также вернет значение false и отменяет поведение якоря. /p >

Итак, это должно решить вашу проблему:

somefunction = function () { alert('foo'); return false; }

Но я должен упомянуть, что когда есть ошибка где-то в somefunction, остальная часть javascript не будет выполняться, и браузер по-прежнему будет следовать ссылке на #. Поэтому рекомендуется использовать javascript:void(0), так как это избавит вас от этой проблемы.

Ответ 3

Верните false из обработчика onclick, например:

<a href="#" onclick="somefunction(); return false;">anchor</a>

Ответ 4

Вам нужно сделать somefunction() return false, или вам нужно явно добавить return false к вашему обработчику onclick. Например:

<a href="#" onclick="somefunction(); return false;">anchor</a>

Это приведет к тому, что браузер игнорирует часть href ссылки, когда кто-то нажимает на нее.