Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3009 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [Javascript] Problème entre deux fonctions

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Javascript] Problème entre deux fonctions

n°1655446
Badaboum11
Posté le 09-12-2007 à 20:41:25  profilanswer
 

Hello,
 
j'utilise Mootools et j'ai un conflit entre ces fonctions:
 
 
js:

Code :
  1. window.addEvent('domready', function() {
  2. var highlight = $$('.highlighting');
  3. highlight.each(function(h) {
  4.  h.addEvent('click', function(e) {
  5.   e = new Event(e);
  6.   this.highlight('#eeeeaa');
  7.   e.stop();
  8.  });
  9. });
  10. });
  11. window.addEvent('domready', function() {
  12. $('format').getElements('input').addEvent('click', function() {
  13. $('selection-format').innerHTML = this.id;
  14. });
  15. });


 
html:
 

Code :
  1. <fieldset id="format">
  2. <p><label class="highlighting">
  3. <img src="js/chk_on.png" id="img_radio_cd" alt="Bouton radio" />
  4. <input id="cd" onclick="turnImgRadio3(this)" type="radio" checked="checked" value="cd" name="format" /><strong>édition CD</strong>
  5. </label> ou</p>
  6. <p><label class="highlighting">
  7. <img src="js/chk_off.png" id="img_radio_dvd" alt="Bouton radio" />
  8. <input id="dvd" onclick="turnImgRadio3(this)" type="radio" value="dvd" name="format" /><strong>édition DVD</strong>
  9. </label> ?</p>
  10. </fieldset>


 
si j'enléve la fonction highlight (pour faire un effet d'opacité au click sur <label> ), la fonction pour connaitre quel input est selectionné (qui va inscrire le résultat dans un <span id="selection-format"></span> ) fonctionne... j'en déduit un problème mais je ne vois pas ou :/
 
merci
 
je précise qu'au départ, les deux fonctions ensemble ne fonctionnent pas.
 
++

mood
Publicité
Posté le 09-12-2007 à 20:41:25  profilanswer
 

n°1655636
kao98
...
Posté le 10-12-2007 à 09:50:23  profilanswer
 

Tu ajoutes deux eventHandler pour un évènement. Mais ton browser n'en prends qu'un !
 

Code :
  1. window.addEvent('domready', function()
  2. {
  3.    //Trucs à faire 1 : ajout des highlight
  4.    var highlight = $$('.highlighting');
  5.    highlight.each(function(h) {
  6.    //...
  7.  
  8.    //Trucs à faire 2 : gestion des clics sur certains éléments
  9.    $('format').getElements('input').addEvent('click', function() {
  10.    //...
  11.  
  12. }


 
Je ne vois vraiment pas pourquoi tu veux utiliser deux fonctions pour gérer la réponse à un seul évènement (domReady).
 
Note : je suis débutant en JS, alors peut-être j'ai dit des conneries !


Message édité par kao98 le 10-12-2007 à 09:51:27

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
n°1655740
Badaboum11
Posté le 10-12-2007 à 11:35:56  profilanswer
 

Ben même en essayant ça, ça fonctionne pas...
 
J'ai plusieurs window.addEvent('domready', function()  , jamais eu de problèmes avant.

n°1655745
kao98
...
Posté le 10-12-2007 à 11:43:37  profilanswer
 

Badaboum11 a écrit :


J'ai plusieurs window.addEvent('domready', function()  , jamais eu de problèmes avant.


Je ne vois pas l'intérêt. Même si ça fonctionne, ça rend ton code moins lisible ! Le jour ou tu recherche ce qui se passe sur tel évènement, plutôt que d'avoir une fonction qui gère tout ce qu'il doit se passer, tu en as plusieurs. Tu vas en lire une sans forcément tout de suite penser que tout ce qui se passe n'est pas dans cette fonction là, mais dans une autre !
 
Edit : m'enfin, concernant ton problème, là comme ça, je ne vois pas, désolé :/


Message édité par kao98 le 10-12-2007 à 11:44:32

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
n°1655768
Badaboum11
Posté le 10-12-2007 à 12:08:38  profilanswer
 

Bon, j'ai pu qu'un seul domready :p
 
Voilà mon code mootools complet:
 

Code :
  1. window.addEvent('domready', function(){
  2. var slides = [];
  3. $$('.slideables').each(function(mySlide){
  4.   slides[slides.length] = new Fx.Slide(mySlide).hide();
  5. });
  6. $$('.toggle').addEvent('click', function(e){
  7.   e = new Event(e);
  8.   slides.each(function(mySlide){
  9.     mySlide.toggle();
  10.   });
  11.   e.stop(); 
  12. });
  13. var slides = [];
  14. $$('.slideables2').each(function(mySlide){
  15.   slides[slides.length] = new Fx.Slide(mySlide).hide();
  16. });
  17. $$('.toggle2').addEvent('click', function(e){
  18.   e = new Event(e);
  19.   slides.each(function(mySlide){
  20.     mySlide.toggle();
  21.   });
  22.   e.stop(); 
  23. });
  24. var highlight = $$('.highlighting');
  25. highlight.each(function(h) {
  26.  h.addEvent('click', function(e) {
  27.   e = new Event(e);
  28.   this.highlight('#eeeeaa');
  29.   e.stop();
  30.  });
  31. });
  32. $('distro').getElements('input').addEvent('click', function() {
  33. $('selection-distro').innerHTML = this.id;
  34. });
  35. $('architecture').getElements('input').addEvent('click', function() {
  36. $('selection-archi').innerHTML = this.id;
  37. });
  38. $('format').getElements('input').addEvent('click', function() {
  39. $('selection-format').innerHTML = this.id;
  40. });
  41. var Tips2 = new Tips($$('.toggle'), {
  42. initialize:function(){
  43.  this.fx = new Fx.Style(this.toolTip, 'opacity', {duration: 500, wait: false}).set(0);
  44. },
  45. onShow: function(toolTip) {
  46.  this.fx.start(1);
  47. },
  48. onHide: function(toolTip) {
  49.  this.fx.start(0);
  50. }
  51. });
  52. var Tips2 = new Tips($$('.toggle2'), {
  53. initialize:function(){
  54.  this.fx = new Fx.Style(this.toolTip, 'opacity', {duration: 500, wait: false}).set(0);
  55. },
  56. onShow: function(toolTip) {
  57.  this.fx.start(1);
  58. },
  59. onHide: function(toolTip) {
  60.  this.fx.start(0);
  61. }
  62. });
  63. });


 
Le problème est toujours le même, et j'en ai un autre sur la fonction toggle: les liens de classe ".toggle" et ".toggle2" n'agissent que sur les div de classe ".slideables2" ..  les div ".slideables" ne se déroulent plus en cliquant sur un lien ".toggle" ..
 
++
 

n°1656170
Badaboum11
Posté le 10-12-2007 à 23:25:16  profilanswer
 

un problème au niveau de var slides = [];  ?  Je suis débutant aussi, j'arrive pas à me corriger :p

n°1656487
Badaboum11
Posté le 11-12-2007 à 12:55:15  profilanswer
 

personne? :(

n°1657021
mIRROR
Chevreuillobolchévik
Posté le 12-12-2007 à 10:27:26  profilanswer
 


Code :
  1. var highlight = $$('.highlighting');
  2. this.highlight('#eeeeaa');


 
je crois que le conflit nait plutot ici
tu peux avoir autant de domready que tu veux c est certainement pas un probleme
mais nommer une variable avec un nom de fonction est une tres mauvaise idee


---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
n°1657124
Badaboum11
Posté le 12-12-2007 à 13:36:45  profilanswer
 

mIRROR a écrit :


Code :
  1. var highlight = $$('.highlighting');
  2. this.highlight('#eeeeaa');


 
je crois que le conflit nait plutot ici
tu peux avoir autant de domready que tu veux c est certainement pas un probleme
mais nommer une variable avec un nom de fonction est une tres mauvaise idee


 
 
en effet, ça va mieux, mais  la fonction ne fonctionne pas :/ ya pas d'effet:
 

Code :
  1. window.addEvent('domready', function() {
  2. var highlighting = $$('.highlighting');
  3. highlight.each(function(h) {
  4.  h.addEvent('click', function(e) {
  5.   e = new Event(e);
  6.   this.highlighting('#eeeeaa');
  7.   e.stop();
  8.  });
  9. });
  10. });


 
spa bon?

n°1657384
mIRROR
Chevreuillobolchévik
Posté le 12-12-2007 à 19:44:56  profilanswer
 

mais tu comprends pas ce que tu fais [:pingouino dei]


---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
mood
Publicité
Posté le 12-12-2007 à 19:44:56  profilanswer
 

n°1657473
Badaboum11
Posté le 12-12-2007 à 23:13:37  profilanswer
 

mIRROR a écrit :

mais tu comprends pas ce que tu fais [:pingouino dei]


si je savais déjà comment faire et tout, je posterais pas...

n°1657505
mIRROR
Chevreuillobolchévik
Posté le 13-12-2007 à 08:17:56  profilanswer
 

au depart je croyais que t avais juste un petit conflit a resoudre
maintenant je vois qu il y a jamais eu de conflit: ta fonction highlight n a jamais marché quoi [:petrus dei]
 
lis un peu
http://docs.mootools.net/Effects/Fx-Style.js


---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
n°1657623
Badaboum11
Posté le 13-12-2007 à 11:56:31  profilanswer
 

mIRROR a écrit :

au depart je croyais que t avais juste un petit conflit a resoudre
maintenant je vois qu il y a jamais eu de conflit: ta fonction highlight n a jamais marché quoi [:petrus dei]

 

lis un peu
http://docs.mootools.net/Effects/Fx-Style.js


si, elle a déjà fonctionné...

 

la doc n'est pas celle-là, FxStyle est remplacé par FxTween à partir de la 1.2 bêta: http://docs12b.mootools.net/Fx/Fx.Tween  et oui je l'ai déjà lu :)

 

donc:

 
Citation :

Examples:

 

$('myElement').highlight('#ddf'); //a quick light blue highlight

 

Ce qui dans mon cas devient

 
Code :
  1. $$('.highlighting').highlight('#eeeeaa')
 

ce qui nous fait:

Code :
  1. window.addEvent('domready', function() {
  2. $$('.highlighting').highlight('#eeeeaa')
  3. });
 

Là ça fonctionne, mais l'effet apparait dès le chargement. Comment rajouter l'événement sur le click?
Je n'ai réussit qu'a trifouiller depuis une autre fonction existante, et rien.  Donc je trifouille mal :)

 

un

Code :
  1. window.addEvent('click', function() {
  2. $$('.highlighting').highlight('#eeeeaa')
  3. });


fonctionn, mais le problème c'est qu'il highlight tous les textes pourvus de la class highlighting au même moment.. et moi j'aimerais que non: effet seulement sur le morceau de texte ou l'on a cliqué.

 


Personne pour m'aider?

Message cité 1 fois
Message édité par Badaboum11 le 13-12-2007 à 12:02:51
n°1657631
mIRROR
Chevreuillobolchévik
Posté le 13-12-2007 à 12:18:07  profilanswer
 

Badaboum11 a écrit :


Citation :

Examples:

 

$('myElement').highlight('#ddf'); //a quick light blue highlight



 

tu comprends cette ligne :??:

Badaboum11 a écrit :


Ce qui dans mon cas devient

 
Code :
  1. $$('.highlighting').highlight('#eeeeaa')




surement pas la tu as un tableau d elements ...pas UN element (meme si mootools permet ce raccourci mais bon...)

Badaboum11 a écrit :

 

ce qui nous fait:

Code :
  1. window.addEvent('domready', function() {
  2. $$('.highlighting').highlight('#eeeeaa')
  3. });
 



pas du tout
tu veux ajouter ton evenement sur les elements de $$('.highlighting') pas sur window

Badaboum11 a écrit :


Là ça fonctionne, mais l'effet apparait dès le chargement. Comment rajouter l'événement sur le click?
Je n'ai réussit qu'a trifouiller depuis une autre fonction existante, et rien.  Donc je trifouille mal :)

 



pas des le chargement mais le domready... le load est beaucoup plus tard (de quelques millisecondes a plusieurs secondes selon le nombre d images et d autres parametres)

Badaboum11 a écrit :


un

Code :
  1. window.addEvent('click', function() {
  2. $$('.highlighting').highlight('#eeeeaa')
  3. });


fonctionn, mais le problème c'est qu'il highlight tous les textes pourvus de la class highlighting au même moment.. et moi j'aimerais que non: effet seulement sur le morceau de texte ou l'on a cliqué.


je suis désolé mais ca sert a rien de trifouiller sans comprendre [:spamafote]
tu dis que t as lu la doc (ce dont je doute mais passons) mais tu n y comprends absolument rien
http://docs12b.mootools.net/Elemen [...] t:addEvent
fais toi plaisir et essaie juste de comprendre comment on ajoute un evenement sur un element
prends ton temps car le copier coller ne t aidera jamais a comprendre


Message édité par mIRROR le 13-12-2007 à 12:18:48

---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
n°1657649
Badaboum11
Posté le 13-12-2007 à 12:53:17  profilanswer
 

Il suffit de regarder la doc pour voir qu'elle est uniquement fondée sur les ID, dès qu'on veut appliquer à des class, c'est la merde...
 
pour l'effet highlight, on ne peut même pas utiliser un système avec les ID correctement, exemple:
 
js:
 

Code :
  1. window.addEvent('click', function() {
  2. $('bla1bla1').highlight('#eeeeaa')
  3. });
  4. window.addEvent('click', function() {
  5. $('blablabla').highlight('#eeeeaa')
  6. });


 
html:
 

Code :
  1. <p><label id="bla1bla1">1</label></p>
  2. <p><label id="blablabla">2</label></p>


 
Un clic sur le label bla1bla1 fait un effet sur le blablabla aussi...

n°1657678
mIRROR
Chevreuillobolchévik
Posté le 13-12-2007 à 13:35:26  profilanswer
 

Badaboum11 a écrit :

Il suffit de regarder la doc pour voir qu'elle est uniquement fondée sur les ID, dès qu'on veut appliquer à des class, c'est la merde...
 
pour l'effet highlight, on ne peut même pas utiliser un système avec les ID correctement, exemple:
 
js:
 

Code :
  1. window.addEvent('click', function() {
  2. $('bla1bla1').highlight('#eeeeaa')
  3. });
  4. window.addEvent('click', function() {
  5. $('blablabla').highlight('#eeeeaa')
  6. });


 
html:
 

Code :
  1. <p><label id="bla1bla1">1</label></p>
  2. <p><label id="blablabla">2</label></p>


 
Un clic sur le label bla1bla1 fait un effet sur le blablabla aussi...


tu comprends rien a ce que tu fais c est dramatique :/
c est pas le clic sur blabla1 qui declenche le truc c est un clic n importe ou dans ta fenetre  
tu sais meme pas a quel element tu ajoutes ton evenement ?


---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
n°1657679
kao98
...
Posté le 13-12-2007 à 13:35:34  profilanswer
 

C'est normal ! Tu ajoutes ton event à l'objet window, pas à un de tes objets auxquels tu veux appliquer ton effet !


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
n°1657791
Shinuza
This is unexecpected
Posté le 13-12-2007 à 15:31:23  profilanswer
 

[:prozac]


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1657820
Badaboum11
Posté le 13-12-2007 à 16:17:56  profilanswer
 


 

Citation :

tu comprends rien a ce que tu fais c est dramatique :/


Oui, vous pouvez vous amuser à me voir ramer mais c'est pas grave...
 
mais merci, j'ai quand même compris quelques trucs.
 
bye.

n°1657825
Shinuza
This is unexecpected
Posté le 13-12-2007 à 16:24:36  profilanswer
 

M'enfin, c'est pas comme si le site de Mootools était gavé d'exemples.


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1658056
gatsu35
Blablaté par Harko
Posté le 14-12-2007 à 06:42:19  profilanswer
 

Badaboum11 a écrit :


 

Citation :

tu comprends rien a ce que tu fais c est dramatique :/


Oui, vous pouvez vous amuser à me voir ramer mais c'est pas grave...
 
mais merci, j'ai quand même compris quelques trucs.
 
bye.


Tu empiles conneries sur conneries dans ton code, et mirror et shinuza essayent de t'expliquer !!!

n°1658077
kao98
...
Posté le 14-12-2007 à 09:07:30  profilanswer
 

Badaboum11 a écrit :


 

Citation :

tu comprends rien a ce que tu fais c est dramatique :/


Oui, vous pouvez vous amuser à me voir ramer mais c'est pas grave...
 
mais merci, j'ai quand même compris quelques trucs.
 
bye.


Tu veux utiliser des concepts que tu es loin de maitriser, mais tu ne cherches pas à comprendre on dirait ! Revois donc les bases de JS avant de continuer ton projet !


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [Javascript] Problème entre deux fonctions

 

Sujets relatifs
Probléme Vb error '429'Mon contrôleur de formulaire en javascript
utiliser les fonctions id3 avec php[G TRouvé] A locker merci modo
Probleme d'affichageProblème affichage du text dans un fichier après OpenTextFile
probleme affichage de caractèresProblème avec un constante pour tableau
debuuger javascript sous strutsprobleme exo XML
Plus de sujets relatifs à : [Javascript] Problème entre deux fonctions


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR