sidarks
Messages postés15Date d'inscriptionvendredi 10 novembre 2006StatutMembreDernière intervention17 novembre 2009
-
17 nov. 2009 à 11:54
jdmcreator
Messages postés647Date d'inscriptionsamedi 30 décembre 2000StatutMembreDernière intervention20 juillet 2012
-
17 nov. 2009 à 17:43
Bonjour,
Je rencontre un souci avec une fonction en JS.
Le contexte : Je souhaite à l'aide d'un menu déroulant, choisir quelles colonnes d'un tableau j'affiche ou non.
J'utilise donc pour cela 3 fonctions :
- Une pour récupérer la valeur de mon menu déroulant
- Une pour afficher la colonne ou les colonnes si elles ne sont pas visible
- une pour cacher les colonnes qui étaient visibles mais qui ne doivent plus l'être.
Je suis obligé d'utiliser les Class car il y a plusieurs colonnes ( ici 'td') à afficher ou masquer à chaque fois.
L'erreur : Sous FF, pas de problème ça marche nickel. Par contre le problème vient d'IE ( testé sur les versions 6 et 8). Où la sélection du menu déroulant ne change rien et me donne comme erreur : 'length'a une valeur null ou n'est pas un objet.
Ma Question : d'où vient cette erreur, et pourquoi le calcul du length ne se fait pas de la même manière sous IE et sous FF ?
Merci de votre précieuse aide, car j'ai beau chercher, je ne trouve pas de bonnes solutions. Pour info, je ne maitrise le javascript que très peu.
Ci-dessous les codes de mes fonctions JS + mes tableaux HTML de tests.
function toggle_aff(className)
{
var elements = document.getElementsByClassName(className);
var l = elements.length;
for (var i = 0; i < l; i++)
{
if (elements[i].style.display == 'block')
elements[i].style.display = 'none';
else
elements[i].style.display = 'block';
}
}
function toggle_cach(className)
{
var elements = document.getElementsByClassName(className);
var l = elements.length;
for (var i = 0; i < l; i++)
{
elements[i].style.display = 'none';
}
}
function affiche(value)
{
if(value=='indiv')
{
toggle_aff("test1");
toggle_cach("test2");
toggle_cach("test3");
}
else if(value=='pro')
{
toggle_aff("test2");
toggle_cach("test1");
toggle_cach("test3");
}
else if(value=='test')
{
toggle_aff("test3");
toggle_cach("test2");
toggle_cach("test1");
}
}
et l'HTML :
<select onchange="affiche(this.value);">
<option value="indiv">individual </option>
<option value="pro"> professional </option>
<option value="test"> test </option>
</select>
Test 1,
Test 2,
Test 3,
Test 3.2