[JavaScript] Tableau html et tri sur champs [Résolu/Fermé]

Messages postés
1544
Date d'inscription
vendredi 6 juillet 2007
Statut
Membre
Dernière intervention
8 avril 2016
- - Dernière réponse : freto
Messages postés
1544
Date d'inscription
vendredi 6 juillet 2007
Statut
Membre
Dernière intervention
8 avril 2016
- 18 déc. 2008 à 08:26
Bonjour tout le monde.
Je doit réaliser une maquette en HTML/JS pour une tite appli.
J'ai a un moment donné, un tableau HTML (<table> <td> <tr> avec pour les tr un id propre).
ex:
<table id="tab">
    <td id="A"> ...</td>
    .....
</table>

J'aimerais qu'un lien ne m'affiche que la ligne A, un autre la ligne B etc etc...j'ai donc fait une fonction js dans un fichier que j'inclut correctement: voici la dite fonction:

function aficher(idAfficher, idTableau){
	alert("toto");
	Var tableau=document.getElementById(idTableau);
	for (var l=0;l<tableau.length;l++){
		if(tab[l].id==idAfficher){
			tableau[l].style.display="";
		}else{
			tableau[l].style.display="";
		}
	}
			
}

Première chose: ce code ne fonctionne pas.
Deuxieme chose: il fait planter tout mon affichage (banniere, menu...).
Le alert(toto) est là pour un debugg, mais il n'y passe jamais. Peut etre que sa vient du fait que mon lien appelant la fonction se trouve avant le tableau, je n'en sais rien, mais ce n'est pas le plus choquant.

Pourtant, sur le papier sa avait l'air de bien fonctionner....
Merci d'avance si quelqu'un peut m'aider et me donner une piste ^^
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
1544
Date d'inscription
vendredi 6 juillet 2007
Statut
Membre
Dernière intervention
8 avril 2016
132
1
Merci
Bah du coup ce que je pensais etre un probleme n'en est pas un: sa ne dérange en rien de déclarer les liens après ou avant.
Le seul probleme dans ma fonction est qu'on ne parcours pas un tableau comme je le pensais. La soluce finale est:
function afficher(idAfficher, idTableau){
	
	var tableau;
	tableau=document.getElementById(idTableau);
	
	for (var l=1;l<tableau.rows.length;l=l+1){
		
		if(tableau.rows[l].id==idAfficher){
			tableau.rows[l].style.display="";
			
		}else{
			
			tableau.rows[l].style.display="none";
		}
	}
}

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 70858 internautes nous ont dit merci ce mois-ci

Messages postés
998
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
316
0
Merci
Bonjour Freto,
Premièrement (je ne sais pas si tu l'as fait), il faut appeler ta fonction lorsque tu cliques sur ton lien (ça doit ressembler à un code comme <td id="D"><a onClick="aficher('D', 'tab')" href="#">Cliquez ici</a></td>).

Ensuite, je ne pense pas que tableau[l].style.display=""; fonctionne. Personnellement je ferais :
tableau[l].style.visibility="hidden"; //ou = "visible" pour afficher


Cordialement,
freto
Messages postés
1544
Date d'inscription
vendredi 6 juillet 2007
Statut
Membre
Dernière intervention
8 avril 2016
132 -
Merci pour ta réponse.
Alors sur le premier point, effectivement je ne l'ai pas indiqué, mais je fait bien ce que tu indique. Simplement, cela ne fonctionne pas.
Ensuite, ta méthode ne fonctionne pas plus que la mienne, en tout cas en ce qui concerne le bugg d'affichage.
Pour la propriété display, je l'ai testé sur un autre bout de code, et cela fonctionne.
Merci cependant pour ta piste.
Marco la baraque
Messages postés
998
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
316 > freto
Messages postés
1544
Date d'inscription
vendredi 6 juillet 2007
Statut
Membre
Dernière intervention
8 avril 2016
-
Si ton alert ne s'affiche pas, c'est que ta méthode n'est pas appellée.
Donc il ne faut pas juger trop rapidement de "bug d'affichage", le code n'étant pas encore exécuté.

Vérifie bien que ton fichier js est bien inclus, que tu peux faire appel à d'autres fonctions (par exemple dans le onLoad du body, juste pour tester...).

Cordialement,
Messages postés
1544
Date d'inscription
vendredi 6 juillet 2007
Statut
Membre
Dernière intervention
8 avril 2016
132
0
Merci
Merci pour tes réponses marco, et merci Firebug, que je ne saurais trop conseiller.
Il a pu me sortir une console d'erreur de js, et il existait deux erreurs: j'ai deux fichiers js dont un appelle la fonction d'un autre (pas bon), et la deuxième erreur résidait dans ma déclaration de variable tableau: ce n'est pas Var tableau mais var tableau (et oui, une majuscule m'a fait capoter le truc).
Bon la première solution (inclure toutes les fonctions dans un seul .js) a résolut le bugg d'affichage, et le deuxième est censé résoudre le reste, mais il me manque une chose pour que tout fonctionne: les liens qui vont utiliser la fonction sont placés avant le tableau traité, donc je cherche à appeler une fonction avec un paramètre de tableau qui n'est définit qu'après l'appel de la fonction.
Cercle vicieux, je ne sais pas encore comment je vais contourner le truc.
En tout cas, problème résolut ^^