Partage
  • Partager sur Facebook
  • Partager sur Twitter

Changement de couleur

Avec GetElementsByClassName

Sujet résolu
    18 décembre 2008 à 16:41:22

    EDIT 2 : Problème résolu. J'ai modifié la ligne "document.getElementById("Page"+NombrePages[i]+"").style.color='black';" en "document.getElementById("Page"+NombrePages[i].id+"").style.color='black';"

    EDIT : j'ai avancé un peu sur le problème. Le soucis semble venir de la variable "NombrePages" qui ne contient pas les infos que je pensais. J'ai du mal comprendre la fonction. En effet, la valeur retournée est en fait la valeur du href de chacun de mes liens. Il faut que je bidouille ça pour obtenir l'ID de chaque lien à la place.

    Bonjour à tous,

    Je rencontre un petit problème de Javascript dont je vais vous compter l'histoire. Sur une de mes pages PHP listant un certain nombre de résultats, j'utilise le système du TP "Livre d'Or" de M@teo pour faire un système de pages. Pour mes besoins, j'ai fait quelques modifications mineures : j'ai ajouté un ID à chaque lien du type "Page1, Page2, Page..., PageN" et la même classe "LienPages" à chacun des liens.

    Pourquoi ces ID et cette class me direz-vous ?
    Car je veux que le lien de la page sur laquelle se trouve le visiteur soit d'une couleur différente. Pour ce faire, je fais un p'tit coup de "document.getElementById("Page"+page+"").style.color='red';" pour mettre une couleur au lien de la page en cours. Le hic, c'est qu'au moment où je change de page, le lien de la nouvelle page prend bien la couleur rouge mais l'ancien lien la garde.

    Je me suis alors dit : "Je vais ajouter une class et, au chargement d'une nouvelle page, je fais un getElementsByClassName (trouvé dans le tuto JS non officiel du SdZ) pour récupérer tous mes liens et les remettre dans leur couleur d'origine.

    Dans la configuration ci-dessous (pour mon script, c'est le seul qui change), j'ai le droit à une belle erreur : Components is not defined --> {NombrePages[i].style.color='black';}
    J'ai aussi essayé un
    document.getElementById("Page"+NombrePages[i]+"").style.color='black';
    
    mais ça ne marche pas non plus... J'avoue que là, je suis un peu dépassé.

    Si vous avez besoin d'autres infos pour comprendre le problème n'hésitez pas à m'en demander.
    Merci d'avance. :)

    Tuttu

    Voici les bouts de scripts pour comprendre :

    Un lien :
    <a href="#" id="Page1" class="LienPages" onclick="AfficherResultats'same\','1')">1</a>
    


    La fonction GetElementsByClassName si besoin :
    document.getElementsByClassName = function(className, elmt)
    {
       var selection = new Array();
       var regex = new RegExp("\\b" + className + "\\b");
    
       // le second argument, facultatif
       if(!elmt)
          elmt = document;
       else if(typeof document == "string")
          elmt = document.getElementById(elmt);
       
       // on sélectionne les éléments ayant la bonne classe
       var elmts = elmt.getElementsByTagName("*");
       for(var i=0; i<elmts.length; i++)
          if(regex.test(elmts[i].className))
             selection.push(elmts[i]);
    
       return selection;
    }
    


    Mon bout de code faisant appel à la fonction :
    function AfficherResultats(tri,page)
    {
    	
    	new Ajax.Updater(
    		'resultats_recents',
    		'affichage_resultats_recents.php',
    		{
    			method: 'get',
    			parameters: 'ResultatsAAfficher=25&Page='+page+'&Tri='+tri+'',
    			onLoading: function()
    			{  
    				document.getElementById("resultats_recents").style.display='none';
    				document.getElementById("NombreDePages").style.display='none';
    				document.getElementById("traitement_affichage").style.display='block';
    			},  
    			onComplete: function()
    			{  				
    				var NombrePages = document.getElementsByClassName('LienPages');
    				for(var i=1; i=NombrePages.length; i++)
    					{NombrePages[i].style.color='black';}
    				document.getElementById("resultats_recents").style.display='block';
    				document.getElementById("NombreDePages").style.display='block';
    				document.getElementById("traitement_affichage").style.display='none';
    				document.getElementById("Page"+page+"").style.color='red';
    			} 
    		}
    	);
    	
    }
    
    • Partager sur Facebook
    • Partager sur Twitter

    Changement de couleur

    × 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