web-dev-qa-db-fra.com

Comment appeler une fonction JavaScript au lieu de href en HTML

J'ai une maquette en HTML

<a href="javascript:ShowOld(2367,146986,2)"><img title="next page" alt="next page" src="/themes/me/img/arrn.png"></a>

J'ai reçu la réponse du serveur lorsque j'ai envoyé la demande.

Avec cette maquette, j'ai reçu en réponse la demande AJAX qui envoie mon code au serveur.

Tout va bien, mais lorsque je clique sur le lien, le navigateur veut ouvrir la fonction en tant que lien. ce qui signifie après clic, je vois la barre d'adresse comme

javascript:ShowOld(2367,146986,2)

signifie quelque chose de navigateur qui est url si je veux faire cela dans firebug qui est le travail. Maintenant, je veux le faire, puis quand quelqu'un clique sur le lien, le navigateur essaie d'appeler la fonction déjà chargée dans le DOM au lieu d'essayer de les ouvrir dans le navigateur.

74
user605334

Cette syntaxe devrait fonctionner correctement, mais vous pouvez essayer cette alternative.

<a href="javascript:void(0);" onclick="ShowOld(2367,146986,2);">

ou

<a href="javascript:ShowOld(2367, 146986, 2);">

RÉPONSE MISE À JOUR POUR LES VALEURS STRING

Si vous passez des chaînes, utilisez des guillemets simples pour les paramètres de votre fonction

<a href="javascript:ShowOld('foo', 146986, 'bar');">
162
Dutchie432

Si vous ne disposez que du "gestionnaire d'événement de clic", utilisez plutôt un <button>. Un lien a une signification sémantique spécifique.

Par exemple.:

<button onclick="ShowOld(2367,146986,2)">
    <img title="next page" alt="next page" src="/themes/me/img/arrn.png">
</button>
9
Felix Kling

Essayez de rendre votre javascript discret:

  • vous devriez utiliser un lien réel dans l'attribut href
  • et ajouter un écouteur sur l'événement click pour gérer ajax
7
soju
href="#" onclick="javascript:ShowOld(2367,146986,2)
4
nico

J'utilise un petit CSS sur un span pour le faire ressembler à un lien comme ceci:

CSS:

.link {
    color:blue;
    text-decoration:underline;
    cursor:pointer;
}

HTML:

<span class="link" onclick="javascript:showWindow('url');">Click Me</span>

JAVASCRIPT:

function showWindow(url) {
    window.open(url, "_blank", "directories=no,titlebar=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes");
}
4
tolsen64

Vous devez également séparer le javascript du HTML.
HTML:

<a href="#" id="function-click"><img title="next page" alt="next page" src="/themes/me/img/arrn.png"></a>

javascript:

myLink = document.getElementById('function-click');
myLink.onclick = ShowOld(2367,146986,2);

Assurez-vous simplement que la dernière ligne de la fonction ShowOld est:

return false;

cela empêchera le lien de s'ouvrir dans le navigateur.

3
hellsgate