Changement de script dynamique de onclick sur html [Résolu]

cousinlol 59 Messages postés mercredi 21 juin 2006Date d'inscription 26 octobre 2015 Dernière intervention - 30 avril 2007 à 18:55 - Dernière réponse : cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention
- 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
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 1 mai 2007 à 09:47
3
Merci
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    

Merci cs_bultez 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de cs_bultez
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 1 mai 2007 à 05:43
0
Merci
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    
Commenter la réponse de cs_bultez
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 1 mai 2007 à 07:08
0
Merci
au fait... s'il faut changer l'image au click ( si j'ai bien compris ) :

<hr />


Cordialement            Bul    
Commenter la réponse de cs_bultez
cousinlol 59 Messages postés mercredi 21 juin 2006Date d'inscription 26 octobre 2015 Dernière intervention - 1 mai 2007 à 07:58
0
Merci
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"
Commenter la réponse de cousinlol
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 1 mai 2007 à 08:12
0
Merci
>>"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    
Commenter la réponse de cs_bultez
cousinlol 59 Messages postés mercredi 21 juin 2006Date d'inscription 26 octobre 2015 Dernière intervention - 1 mai 2007 à 08:30
0
Merci
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 ?
Commenter la réponse de cousinlol

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.