le javascript en ligne de l'événement onclick
C'est mon code html
<a href="#" onclick="return clickHandler()">Hit</a>
C'est mon fichier javascript
function clickHandler(evt) {
var thisLink = (evt)?evt.target:Window.event.srcElement;
alert(thisLink.innerHTML);
return false;
}
Mais quand je clique sur le coup le Lien, il redirige.
Vous devez vous connecter pour publier un commentaire.
À égalité, les deux de la très-bonnes réponses ensemble, ce qui s'est passé est que vous avez incorporé une fonction où vous avez écrit
onclick="return runFunction();"
Si vous regardez, vous verrez que c'est vraiment en train de faire va comme ceci:
Voir le problème?
Mon
runFunction
est appelé sans objet événement passé, à tous....ce qui signifie que
var thisLink = (evt) ?
va retourner false, ce qui signifie qu'il va essayer de courir dans oldIE-mode.Par écrit
onclick="runFunction"
, c'est la même chose que de dire:Ce qui signifie que lorsque l'événement onclick qui se passe, runFunction sera appelée, et conforme au W3C navigateurs, il sera envoyé à un objet d'événement.
C'est pourquoi cette solution fonctionne.
La meilleure façon d'éviter beaucoup de cette confusion est à traiter avec du JavaScript à partir de l'intérieur de JavaScript, et de traiter avec le HTML à l'intérieur de HTML, de sorte que vous n'avez pas à vous soucier de la façon dont les chaînes de traduire dans le code.
Maintenant, pour obtenir l'ensemble de ce travail, ET empêcher la redirection, vous voulez faire cela:
pour le W3C navigateurs (ceux qui passent le paramètre d'événement):
vous devez passer dans le cas si vous souhaitez preventDefault.
html:
script:
Lorsque j'ai branché votre code en chrome, j'ai eu ce que l'erreur dans la console:
Uncaught TypeError: Cannot read property 'srcElement' undefined
SI le javascript bombes lors du traitement, ce n'est jamais une chance de revenir à tous si le navigateur a tendance à ignorer ce qui est dans le onclick gestionnaire d'après le d'exception.
Car il détruit... comportement par défaut des balises d'ancrage, qui est de vous envoyer off à l'endroit où cette href dit d'aller.
Essayer d'emballage le contenu de la fonction dans un bloc try/catch et de voir ce qui tourne si ce genre de chose vous plaies.