Version complète: sur le forum Webmaster Hub : probleme sur onclick
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > AjaX et JavaScript
le fab
Bonjours,

je me prend la tête pour faire un truc tout con :
rajouter des evenement onclick sur des liens ayant comme nom de classe 'aEvent'.
le but du jeu est d'appeler une fonction qui prend comme parametre le parametre dela requete php incluse dans href

exemple :
CODE
<a href="meteo.php?falaise=5">bla bla</a>

(il y a bien sur plusieurs liens comme ca dans la page)

et mon code :
CODE
        
    //test des methodes
    if (!document.getElementsByTagName) {return;}

    //recuperation element
    var oA  = document.getElementsByTagName("a");

    //si pas de lien <a>
    if (!oA ) {return;}

    //nombre le liens trouvés
    var i = oA.length - 1;
    for(i; i >= 0; i--)
    {
        // si le lien est de class 'aEvent'
        if (oA[i].className == "aEvent")
        {            
            //recup numero slide meteo
            var sNum= oA[i].href;
            sNum = sNum.substring(sNum.indexOf("=",0)+1,sNum.length + 1);
            
            oA[i].onclick = function()
            {
                  montremeteo( sNum);
                  return false;
            }
              
        }
    }


lorsque je suis pas à pas ma fonction sois firebug, tout a l'air de bien se passer comme je le souhaite (sNum passe par toutes les valeur definies dans le XHTML).

seulement à la fin, tous mes liens appelent montremeteo('1') ou 1 est la dernière valeur prise par sNum

en esperant avoir clairement exposer mon probleme
et merci d'avance des reponses

fabien
yborean
Hello, ça pourra peut-être t'aider, perso j'utilise ça pour faire s'ouvrir en popup des liens de class="popup", en recuperant le href qu'ils contiennet,
si ça peut t'aider ... unsure.gif

CODE
function addPopupLinks() {
    if (!document.getElementsByTagName) {
        return null;
    }
    var anchors = document.getElementsByTagName("a");
    
    /*
     * recherche la balise <a> ayant l'attribut class="popup"
     */
    for(var i=0; i < anchors.length; i++) {
    
        var a = anchors[i];

    
        if(anchors[i].className == "popup") {
            var ref = anchors[i].href; // mémorise la valeur du lien
            var u = anchors[i].getAttributeNode("onclick"); // récupère l'url qui est passée comme valeur
        
            /*
             * test à effectuer pour la compatibilité IE / FireFox
             */
        
            if(u != null) {
                if(u.value == 'null') {
                    u = null;
                } else {
                    u = u.value;
                }
            }

            /*
             *  Le test est obligatoire pour firefox car le setAttribute ne semble pas fonctionner comme sous IE
             */
            if(! a.setAttribute("ref", ref)) {
                a.ref = ref;
            }

            /*
             * Définit l'action onclick sur le lien
             */
            a.onclick = function(evt) {
                window.open(this.ref, "popupFormulaire", "scrollbars=yes, resizable=yes, toolbar=no, menubar=no, location=no, directories=no, status=yes");
            }
            
            if(u != null) {
                a.href = u; // le lien pointera à l'adresse passée dans le onclick
            }
            else {
                a.href = "#"; // le lien pointera désormais sur lui même
                a.removeAttribute("target"); // suppression de l'attribut target (utilisé par le maileur)
            }        
        }
    }
}
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.