Chcę napisać tag kotwicy, który wykonuje część JavaScript, a następnie przechodzi do miejsca, w którym href
go zabiera. Wywołanie funkcji, która wykonuje mój JavaScript, a następnie ustawia window.location
lub top.location
do href
lokalizacji, nie działa dla mnie.
Więc wyobraź sobie, że mam na stronie element o identyfikatorze „Foo”. Chcę napisać kotwicę podobną do:
<a href="#Foo" onclick="runMyFunction(); return false;">Do it!</a>
Po kliknięciu na to chcę wykonać runMyFunction, a następnie przeskoczyć do strony #Foo
(nie powoduje przeładowania - użycie top.location
spowoduje ponowne załadowanie strony).
Propozycje? Z przyjemnością używam jQuery, jeśli może tu pomóc ...
javascript
jquery
html
anchor
psychotik
źródło
źródło
return true;
jest rozwiązaniem, ale możesz też zadzwonićlocation.hash = '#Foo'
. Nie spowoduje to ponownego załadowania strony.Odpowiedzi:
Wystarczy
return true
zamiast?Wartość zwracana z
onClick
kodu jest tym, co określa, czy nieodłączna akcja kliknięcia linku jest przetwarzana, czy nie - zwracaniefalse
oznacza, że nie jest przetwarzane, ale jeśli wrócisz,true
przeglądarka rozpocznie przetwarzanie po powrocie funkcji i przejdzie do właściwego Kotwica.źródło
undefined
fałszywa do tych celów.<a href="#Foo" onclick="return runMyFunction();">Do it!</a>
i
function runMyFunction() { //code return true; }
W ten sposób wykonasz swoją funkcję ORAZ będziesz podążać za odsyłaczem ORAZ będziesz podążać za odsyłaczem dokładnie po pomyślnym uruchomieniu funkcji.
źródło
Jeśli łącze powinno zmienić lokalizację tylko wtedy, gdy wykonanie funkcji zakończyło się pomyślnie, zrób,
onclick="return runMyFunction();"
aw funkcji zwróciłbyś wartość true lub false.Jeśli chcesz tylko uruchomić funkcję, a następnie pozwolić tagowi kotwicy wykonać swoje zadanie, po prostu usuń
return false
instrukcję.Na marginesie, prawdopodobnie powinieneś zamiast tego użyć programu obsługi zdarzeń, ponieważ wbudowany JS nie jest optymalnym sposobem robienia rzeczy.
źródło
Podczas tworzenia czystej Struktury HTML możesz tego użyć.
//Jquery Code $('a#link_1').click(function(e){ e . preventDefault () ; var a = e . target ; window . open ( '_top' , a . getAttribute ('href') ) ; }); //Normal Code element = document . getElementById ( 'link_1' ) ; element . onClick = function (e) { e . preventDefault () ; window . open ( '_top' , element . getAttribute ('href') ) ; } ;
<a href="#Foo" id="link_1">Do it!</a>
źródło