JavaScript cacher des lignes d'un tableau

Résolu/Fermé
solicel - 29 sept. 2009 à 04:35
 solicel - 30 sept. 2009 à 13:50
Bonjour,
Apres des heures de recherche je decide de vous exposer mon probleme :)
Il s'agit d'une page web qui contient un tableau initialement tout affiché, et que je veux choisir les lignes a afficher ou a cacher de la maniere suivante:
Un autre tableau contenant la liste des mots-clés, qui a chaque fois qu'on clique sur une de ses lignes, la fonction JavaScript "show" cherche les les lignes dans le tableau principal toutes les lignes contenant ce mot clé et les affiche.
Voici ma fonction:


<script type="text/javascript">

function show(rel)
{
table = document.getElementById('tablecontainer').getElementsByTagName('TR')
for (l=0;l<table.length;l++)
{
if(table[l].toString().indexOf(rel)<0)
{
if(table[l].style.display == '') table[l].style.display = 'none';
else table[l].style.display = '';
}
}
}

</script>

C'est la ligne if(table[l].toString().indexOf(rel)<0) qui cause les problemes, pourtant quand je clique sur un mot clé tout le tableau principal se cache/se réaffiche.
Que faire?
Merci beaucoup.
A voir également:

4 réponses

J'ai trouvé la solution, je la publie en espérant qu'elle aidera quelqu'un un jour.
L'astuce consiste a faire une autre boucle pour chaque ligne, pour récupérer les <td> exactement comme on a fait pour les <tr>... c'est presque tout!
Voici le bout du code:



function show(word)
{
var reg=new RegExp(word,'gi')
var lignes=document.getElementById('tablecontainer').getElementsByTagName('tr');
var i=1;
while(lignes[i])
{
var found=false
var cells=lignes[i].getElementsByTagName('td');
var j=0;
while(cells[j])
{
if(cells[j].innerHTML.match(reg)){found=true;}
j++;
}
if(!found)
{
if( lignes[i].style.display == '') lignes[i].style.display = 'none';
else lignes[i].style.display = '';
}
i++;
}
}
3
113pictural Messages postés 464 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 5 octobre 2009 53
29 sept. 2009 à 04:45
Bonjour, je ne puis vous répondre pour le javascript. Cependant, c'est très certainement faisable en .css, en créant autant de classes qu'il y a de listes de mots à mettre en surlignage. Disons que ce sera à essayer la prochaine fois ...

Désolé pour cette fois.
0
Merci 113pictural,
C'est très gentil de ta part,.
et drôle aussi :D
0
Alors personne ne répond?
Je croyais que c'est banal.
en fait le problème est au niveau de la comparaison: if(table[l].toString().indexOf(rel)<0) qui sert a déterminer si le mot clé est inclus dans la ligne ou pas. S'il l'est, il le laisse toujours affiché, sinon il le cache/ré-affiche selon son état actuel.
Puisque maintenant il cache /ré-affiche toutes les lignes, cela veut dire qu'il n'arrive pas a vérifier si le mot clé est dans la ligne ou pas.
j'utilise .toString() pour transformer l'objet en string, ensuite indexOf pour savoir si le mot clé (rel) existe ou pas.
Alors, cela ne vous dit rien?
0