Partage
  • Partager sur Facebook
  • Partager sur Twitter

Changement attribut

Sujet résolu
    8 avril 2009 à 11:43:14

    Bonjour. Bon je vous explique. Je cherche à faire en sorte que ma fonction dans un "onclick" me permette de changer la fonction du "onclick" par une autre. J'ai fais un morceau de code mais ça ne semble pas marcher La première fonction fonctionne quand je clique sur l'élément, mais la seconde non.
    Je sais pas pourquoi mais le forum refuse de passer mon code dans le poste..
    • Partager sur Facebook
    • Partager sur Twitter
      8 avril 2009 à 11:58:37

      Tu veux changer le onclick ou en rajouter une fonction ?
      Parce que pour le changer, tu fait juste element.onclick=function(){}
      Mais pour rajouter sans supprimer l'autre, faut utiliser le addEventListener ;) .
      • Partager sur Facebook
      • Partager sur Twitter
        8 avril 2009 à 12:05:51

        Je veux juste le changer oui. j'ai fais presque ca mais en mettant dans onclick "fonction();"

        Mais ça ne fonctionne pas ^^ je vais essayer ta méthode.

        EDIT: ta méthode fonctionne, l'ennui c'est que... Je clique sur mon élément, mais c'est directement la seconde fonction qui s'exécute après:s

        En fait je veux faire un systeme de gestion de dossier. Donc quand je clique sur un dossier, ca l'ouvre et affiche tout ce qui est dedans. Apres ce clique la fonction doit changer, et cette fonction fera en sorte que si je clique à nouveua sur le dossier, le contenu disparaitra.
        • Partager sur Facebook
        • Partager sur Twitter
          8 avril 2009 à 13:47:33

          Si tu veux, j'ai fais un truc du style recemment, si tu peux t'aider du code hein:
          window.onload = function() {
          	[...]
          	bObjs[i].onclick = buttonClick;
          	[...]
          };
          
          
          var buttonClick = function() {
          	//if (code) { Pas intéressant pour l'exemple
          		this.innerHTML = '<img src="Images/loading.gif" style="width: 12px; height: 12px" alt="" />&nbsp;&nbsp;&nbsp;Cliquez pour une selection manuelle';
          		this.onclick = function() {
          			var value = prompt('Quelle valeur voulez-vous affecter?', codeSelect[2][this.id]);
          			if (value != null) {
          				//var sValue = (value.length > 20) ? (value.substr(0, 20) + '...' + value.substr(-10)) : value; Pas intéressant pour l'exemple
          				
          				//codeSelect[1].title = value; Pas intéressant pour l'exemple
          				//codeSelect[2][codeSelect[1].id] = value; Pas intéressant pour l'exemple
          				//codeSelect[0] = false; Pas intéressant pour l'exemple
          				this.innerHTML = '<strong>Selection:</strong> <em>' + sValue.replace(/</g, '&lt;') + '</em>';
          				
          				this.onclick = buttonClick;
          			}
          		}
          		//codeSelect[0] = true; Pas intéressant pour l'exemple
          		//codeSelect[1] = this; Pas intéressant pour l'exemple
          	//}
          };
          


          En gros, au premier click, sa enclenche "Cliquez pour une selection manuelle" (Qui donne le feu vert a une autre fonction dans mon truc mais bon) Si on reclick dessus, une boite de dialogue apparait. Et si la boite de dialogue est remplie, on revient à l'état d'origine
          • Partager sur Facebook
          • Partager sur Twitter
            8 avril 2009 à 13:50:04

            Ca marche presque mon truc. L'ennui c'est que je dois écrire la fonction sans les parenthèses pour qu'elle ne soit pas executée immédiatement. Mais je veux passer un paramètre moi. As-tu une idée de comment je pourrais faire passer le paramètre sans exécuter la fonction?
            • Partager sur Facebook
            • Partager sur Twitter
              8 avril 2009 à 13:51:23

              truc.onclick = function() { maFonction('Mon param1', 2); };

              Car en faisant ça, le onclick devient la fonction (function() {}) Donc la c'est comme une fonction classique. Et t'y met ce que tu veux a l'interieur
              • Partager sur Facebook
              • Partager sur Twitter
                8 avril 2009 à 13:52:53

                J'essai ca desuite, merci de ton aide :)


                edit :
                Ca marche très bien :) Merci encore.
                Je savais pas qu'on pouvait utiliser une syntaxe étrange comme ça. Dans les autres langages de programmation j'en ai jamais vu ^^
                • Partager sur Facebook
                • Partager sur Twitter
                  8 avril 2009 à 18:00:00

                  Syntaxe étrange, mais qui respecte une certaine logique...

                  function yop() {
                    alert("yop");
                  }
                  // est exactement similaire à
                  var yop = function() {
                    alert("yop");
                  };
                  
                  // Donc que tu fasses :
                  machin.onclick = yop;
                  // ou
                  machin.onclick = function() { alert("yop"); };
                  // C'est pareil ! 
                  
                  //Sauf que dans le deuxième cas, tu peux passer les arguments ! 
                  
                  • Partager sur Facebook
                  • Partager sur Twitter
                    10 avril 2009 à 11:05:42

                    En effet ^^C'est surtout le fait finalement de stocker une fonction dans une var qui est étrange. Merci de vos réponses :)
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Changement attribut

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown