3 votes

Arrêter l'appel de méthodes ultérieures à onclick

Si ce problème existe déjà, merci de m'aider à le marquer comme duplicate car je ne trouve pas de solution similaire.

Si plusieurs méthodes sont appelées sur l'attribut onclick, par exemple :

<a onclick="foo();afterFoo();afterAfterFoo();"/>

Je veux mettre fin aux appels ultérieurs du type afterFoo() , afterAfterFoo(); cuando foo() répond à certaines conditions.

J'ai essayé return false; dans la méthode foo() mais il continue d'appeler d'autres méthodes. Je me souviens que cette astuce fonctionnait comme prévu.

2voto

Aditya Points 43

Ce n'est pas le cas. Vous devez créer une fonction enveloppante et l'attacher en tant que gestionnaire onClick plutôt que d'appeler les 3 fonctions directement à partir de cette fonction. Vous pouvez appeler vos 3 fonctions à partir de la fonction d'habillage en fonction des conditions if.

<a onclick="clickHandler();"/>
function clickHandler() {
    foo() && afterFoo() && afterAfterFoo();
}

1voto

Omri Attiya Points 1115

Vous pouvez le faire simplement en utilisant if conditions :

function foo() {
  console.log('foo')
  return true;
}

function afterFoo() {
  console.log('afterFoo')
  return false;
}

function afterAfterFoo() {
  console.log('afterAfterFoo')
  return true;
}

function specialSequence() {
  if (foo())
    if (afterFoo())
      afterAfterFoo();
}

<a onclick="specialSequence();">Click Me</a>

Que se passe-t-il ici ? nous appelons specialSequence . Il fonctionne foo et si elle renvoie un résultat positif, nous passons à la fonction de séquence suivante afterFoo et si le résultat est vrai, nous continuons à afterAfterFoo . Mais il renvoie un message faux, ce qui signifie qu'après l'exécution de afterFoo la fonction specialSequence cessera de fonctionner.

Après avoir indiqué qu'il y a plusieurs paramètres pour chaque fonction et que vous ne voulez pas de specialSequence pour obtenir la somme des paramètres de toutes les fonctions qu'elle utilise, vous pouvez simplement l'utiliser dans le html comme ceci (copiez simplement la fonction dans le fichier onClick )

function foo() {
  console.log('foo')
  return true;
}

function afterFoo() {
  console.log('afterFoo')
  return false;
}

function afterAfterFoo() {
  console.log('afterAfterFoo')
  return true;
}

<a onclick="if (foo())
    if (afterFoo())
      afterAfterFoo();">Click Me</a>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X