[JavaScript] Tableau html et tri sur champs

Résolu/Fermé
freto Messages postés 1542 Date d'inscription vendredi 6 juillet 2007 Statut Membre Dernière intervention 8 avril 2016 - 16 déc. 2008 à 15:12
freto Messages postés 1542 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 ^^

3 réponses

freto Messages postés 1542 Date d'inscription vendredi 6 juillet 2007 Statut Membre Dernière intervention 8 avril 2016 166
18 déc. 2008 à 08:26
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";
		}
	}
}
1
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 326
16 déc. 2008 à 15:45
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,
0
freto Messages postés 1542 Date d'inscription vendredi 6 juillet 2007 Statut Membre Dernière intervention 8 avril 2016 166
16 déc. 2008 à 15:56
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.
0
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 326 > freto Messages postés 1542 Date d'inscription vendredi 6 juillet 2007 Statut Membre Dernière intervention 8 avril 2016
16 déc. 2008 à 16:11
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,
0
freto Messages postés 1542 Date d'inscription vendredi 6 juillet 2007 Statut Membre Dernière intervention 8 avril 2016 166
17 déc. 2008 à 09:09
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 ^^
0