Javascript ancre éviter de faire défiler vers le haut sur le clic

J'ai créé une fonction en javascript que j'ajoute à une ancre en tant que telle

Javascript:

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

Html:

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

Chaque fois que je clique sur l'ancrage, la fonction s'exécute mais l'écran se déplace vers le haut

Je sais que je pourrais le faire

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

Mais j'ai vu la première option mise en œuvre sans que ce dernier ne se déploie

Y a-t-il une astuce?

Je vous remercie

L'onclick oblige la page à se soumettre de nouveau, donc en défilement vers le haut.

Vous avez besoin de l'événement onclick pour renvoyer un faux afin d'éviter le retour.

Cela peut se faire en changeant votre fonction pour renvoyer un faux:

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

Ou pour modifier le lien et l'événement onClick pour le faire:

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

L'astuce est que votre onclick renvoie la valeur d'une somefunction , de sorte que si vous vous assurez que certains somefunction toujours return false , l'événement renverra également les fausses somefunction et annulera le comportement par défaut de l'ancre.

Donc, cela devrait résoudre votre problème:

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

Mais je dois mentionner que lorsqu'il y a une erreur quelque part dans une somefunction , le reste du javascript ne s'exécutera pas, et le navigateur suivra toujours le lien vers # . Il est conseillé, par conséquent, d'utiliser javascript:void(0) place, car cela vous débarrassera de ce problème.

Renvoie le false de votre gestionnaire Onclick, par exemple:

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

Vous devez faire somefunction() renvoyer false , ou vous devez ajouter explicitement return false à votre onclick OnClick. Par exemple:

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

Cela fera que le navigateur ignore la partie href du lien lorsque quelqu'un clique dessus.