Ссылка HTML anchor - href и onclick оба?

Я хочу создать тег привязки, который запускает некоторый JavaScript, а затем переходит туда, куда его href принимал. Вызов функции, которая выполняет мой JavaScript, а затем устанавливает window.location или top.location в расположение href, не работает для меня.

Итак, представьте, что у меня есть элемент с идентификатором "Foo" на странице. Я хочу создать якорь, похожий на:

<a href="#Foo" onclick="runMyFunction(); return false;">Do it!</a>

Когда это щелкнуто, я хочу выполнить runMyFunction, а затем перейти на страницу #Foo (не вызывать перезагрузку - с помощью top.location приведет к перезагрузке страницы).

Предложения? Я рад использовать jQuery, если он может помочь здесь...

Ответ 1

Только return true вместо этого?

Возвращаемое значение из кода onClick - это то, что определяет, обрабатывается ли связанное с кликом действие ссылки, - возврат false означает, что он не обрабатывается, но если вы вернете true, браузер продолжит обрабатывать его после возвращения функции и перехода к соответствующему якорю.

Ответ 2

<a href="#Foo" onclick="return runMyFunction();">Do it!</a>

и

function runMyFunction() {
  //code
  return true;
}

Таким образом, вы будете иметь функцию youf, и вы будете следовать по ссылке И вы будете следовать по ссылке точно после того, как ваша функция была успешно запущена.

Ответ 3

Если ссылка должна только изменить местоположение, если запуск функции завершен, тогда onclick="return runMyFunction();" и в функции вы вернете true или false.

Если вы просто хотите запустить эту функцию, а затем пусть тег привязки выполняет свою работу, просто удалите оператор return false.

В качестве побочного примечания вы, вероятно, должны использовать обработчик событий, так как встроенный JS не является очень оптимальным способом выполнения действий.