Changement de script dynamique de onclick sur html

Résolu
cousinlol Messages postés 59 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 26 octobre 2015 - 30 avril 2007 à 18:55
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 1 mai 2007 à 09:47
Bonsoir,

J'ai fait un script qui me permet sur un formulaire sur un clic d'effectuer une alternance d'image et de traitement déclenché par onclick :

[code]function changeImage(el_image, numero)
{
      var prefixe = document.getElementById('prefixe').value;
      var id_image = "image"+numero;
      var lien_avant = "new Effect.BlindDown('detail_histo"+numero+"', 1);changeImage(this, '"+numero+"');";
      var lien_apres = "new Effect.BlindUp('detail_histo"+numero+"', 1);changeImage(this, '"+numero+"');";
      var image_avant = 'images/Folder_Close.png';
    var image_avant = prefixe+image_avant;
    var image_apres = 'images/Folder_Open.png';
    var image_apres = prefixe+image_apres;

    if(el_image.src == image_avant)
        {
            el_image.src = image_apres;
            img_onclick = lien_apres;
        }
    else
          {
            el_image.src = image_avant;
            img_onclick = lien_avant;
        }
    document.getElementById(id_image).onclick=function(){img_onclick};
    getElementsByTagName("img").setAttribute("src", el_image.src);
   
}[code]

L'alternance de l'image se fait bien, mais pas celle du onclick

Mon formulaire html est :

[code][code]

Où se trouve mon erreur.

Merci d'avance

6 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
1 mai 2007 à 09:47
par goût ( est-ce mieux ? ) j'utiliserais une même fonction
testant "un état" de l'image et faisant soit BlindDown ou BlindUp
donc seul un onclick dans la balise, c'est tout.
<hr />


Cordialement            Bul    
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
1 mai 2007 à 05:43
Bonjour,

nous on ne dispose pas de :
        getElementById('prefixe')
       Effect.BlindDown
       Effect.BlindUp
       img_onclick               qui doit peut-être être = img_onclick() ?
                                           et pourquoi mettre ça en javascript si onclick déjà mis dans html ?
>>L'alternance de l'image se fait bien
    comment ? car là, on ne peut pas voir ça ? si ?




<hr />



Cordialement            Bul    
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
1 mai 2007 à 07:08
au fait... s'il faut changer l'image au click ( si j'ai bien compris ) :

<hr />


Cordialement            Bul    
0
cousinlol Messages postés 59 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 26 octobre 2015
1 mai 2007 à 07:58
Bonjour et merci

"Prefixe" est le chemin d'accès pour les images

J'ai peut-être fait compliqué, mais "img_onclick" est égal soit à "lien_avant" soit à "lien_apres".
Eux-mêmes étant égal soit à
var lien_avant = "new Effect.BlindDown('detail_histo"+numero+"', 1);changeImage(this, '"+numero+"');";
var lien_apres = "new Effect.BlindUp('detail_histo"+numero+"', 1);changeImage(this, '"+numero+"');";

Je dois le mettre dans java script puisque lorsque je clique sur l'image la 1ère fois, la fonction "Effect.BlindDown" est activé et l'image change, le nom de la fonction disponible doit aussi changer. Si je clique à nouveau, la fonction "Effect.BlindUp" doit être activé et l'image revient à la 1ère ainsi que le nom de la fonction disponible.

Les fonctions Effect.BlindDown et Effect.BlindUp proviennent de "prototype.js" et "scriptaculous.js"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
1 mai 2007 à 08:12
>>"img_onclick" est égal soit à "lien_avant" soit à "lien_apres"

oui, mais en string. ça ne va rien exécuter
(     pas même sûr que eval ça baignerait ,
      en plus le this... ce sera quoi ? la fonction probablement )

    document.getElementById(id_image).onclick=function(){ appel1(); appel2(); ... };

 >>Les fonctions Effect.BlindDown et Effect.BlindUp de prototype et scriptaculous
    je supputais bien un truc comme ça.




<hr />



Cordialement            Bul    
0
cousinlol Messages postés 59 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 26 octobre 2015
1 mai 2007 à 08:30
Donc effectivement le string c'est pas bon,

J'ai comme cela et ça fonctionne

function changeImage(el_image, numero)
{
      var prefixe = document.getElementById('prefixe').value;
      var id_image = "image"+numero;
      var image_avant = 'images/Folder_Close.png';
    var image_avant = prefixe+image_avant;
    var image_apres = 'images/Folder_Open.png';
    var image_apres = prefixe+image_apres;

    if(el_image.src == image_avant)
        {
            el_image.src = image_apres;
            document.getElementById(id_image).onclick=function(){new Effect.BlindUp('detail_histo'+numero, 1); changeImage(this, numero);};
        }
    else
          {
            el_image.src = image_avant;
            document.getElementById(id_image).onclick=function(){new Effect.BlindDown('detail_histo'+numero, 1); changeImage(this, numero);};
        }
    getElementsByTagName("img").setAttribute("src", el_image.src);
}

Merci beaucoup

Vois-tu plus simple ?
0
Rejoignez-nous