Problème avec style.display = "block" sur IE8

Résolu
Vanuch Messages postés 6 Date d'inscription mercredi 21 août 2013 Statut Membre Dernière intervention 17 septembre 2013 - 17 sept. 2013 à 09:36
Vanuch Messages postés 6 Date d'inscription mercredi 21 août 2013 Statut Membre Dernière intervention 17 septembre 2013 - 17 sept. 2013 à 17:18
Bonjour,

Voici la ligne qui me pose problème:

document.getElementsByClassName("adminCompteConfirm")[0].style.display = "block";


Merci d'avance pour toute aide.

4 réponses

@karamel Messages postés 1855 Date d'inscription vendredi 9 mai 2008 Statut Modérateur Dernière intervention 18 avril 2024 153
Modifié par kazma le 17/09/2013 à 10:04
ie 8 ne supporte pas document.getElementsByClassName

var classel=document.body.getElementsByTagName('*');
		
		for (var j=0;j<classel.length;j++){
		
		if(classel[j].className=="adminCompteConfirm"){
				
		classel[j].style.display = "block";
                break;
		}
		}


--
0
Vanuch Messages postés 6 Date d'inscription mercredi 21 août 2013 Statut Membre Dernière intervention 17 septembre 2013
17 sept. 2013 à 11:11
Voici tout le code de ma fonction:
function toggleUpdateUser(toggle)
{
	
	var inputs = document.getElementById("userchange").getElementsByTagName("input");
	
	for (i = 0; i < inputs.length; i++)
	{
		inputs[i].disabled = !toggle;
	}	
	var select = document.getElementById("userchange").getElementsByTagName("select");
	
	for (i = 0; i < select.length; i++)
	{
		select[i].disabled = !toggle;
	}	
	if (toggle)
	{
		document.getElementsByClassName("adminCompteConfirm")[0].style.display = "block";
             	document.getElementsByClassName("adminbuttons")[0].style.display = "none";
		document.getElementById("changePassword").style.display = "block"
	}
	else
	{
		document.getElementsByClassName("adminCompteConfirm")[0].style.display = "none";
		document.getElementsByClassName("adminbuttons")[0].style.display = "block";
		document.getElementById("changePassword").style.display = "none"
	}
}


Le souci est que, je ne vois pas comment utiliser ta solution.

Merci d'avance.
0
@karamel Messages postés 1855 Date d'inscription vendredi 9 mai 2008 Statut Modérateur Dernière intervention 18 avril 2024 153
Modifié par kazma le 17/09/2013 à 14:06
j'ai rajouter une fonction afin de remplacer getelementsByTagName

pour faire plus simple on peut envisager de mettre un id au elements et utiliser document.getElementById

function nom_class(nom){

var classel=document.body.getElementsByTagName('*');
  
  for (var j=0;j<classel.length;j++){
  
  if(classel[j].className==nom){
    
  return classel[j];
                break;
  }
  }
}


function toggleUpdateUser(toggle)
{
 
 var inputs = document.getElementById("userchange").getElementsByTagName("input");
 
 for (i = 0; i < inputs.length; i++)
 {
  inputs[i].disabled = !toggle;
 } 
 var select = document.getElementById("userchange").getElementsByTagName("select");
 
 for (i = 0; i < select.length; i++)
 {
  select[i].disabled = !toggle;
 } 
 if (toggle)
 {
  nom_class("adminCompteConfirm").style.display = "block";
              nom_class("adminbuttons").style.display = "none";
  document.getElementById("changePassword").style.display = "block"
 }
 else
 {
  nom_class("adminCompteConfirm").style.display = "none";
  nom_class("adminbuttons").style.display = "block";
  document.getElementById("changePassword").style.display = "none"
 }
}
0
Vanuch Messages postés 6 Date d'inscription mercredi 21 août 2013 Statut Membre Dernière intervention 17 septembre 2013
Modifié par Vanuch le 17/09/2013 à 16:18
Cette fois ci j'ai un message d'erreur disant " '0.style' is null or not an object". Cette erreur est à l'origine des lignes de code où j'utilise la fonction nom_class; telles que:
nom_class("adminCompteConfirm").style.display = "block";

nom_class("adminbuttons").style.display = "none";

...


Et malheureusement je ne peux pas mettre un id aux elements, parce qu'il y en a trop ... :(
0
@karamel Messages postés 1855 Date d'inscription vendredi 9 mai 2008 Statut Modérateur Dernière intervention 18 avril 2024 153
17 sept. 2013 à 16:39
ils y a plusieurs elements qui on la meme class ?

--
0
Vanuch Messages postés 6 Date d'inscription mercredi 21 août 2013 Statut Membre Dernière intervention 17 septembre 2013
17 sept. 2013 à 16:46
En fait j'utilise les classes adminCompteConfirm et adminbuttons dans plein d'autres fichiers html ...
0
@karamel Messages postés 1855 Date d'inscription vendredi 9 mai 2008 Statut Modérateur Dernière intervention 18 avril 2024 153
Modifié par kazma le 17/09/2013 à 17:16
et dans chaques fichiers il n'y a a chaque fois qu'un seul element qui a la classes adminCompteConfirm et adminbuttons

j'ai modifié la fonction qui retourne un tableau des element d'une page qui on la meme class

function nom_class(nom){

var classel=document.body.getElementsByTagName('*');
var elem=[];
  for (var j=0;j<classel.length;j++){
  
  if(classel[j].className==nom){
  
 elem.push(classel[j]);
  }
  }
  return elem;
}



if (toggle)
 {
  nom_class("adminCompteConfirm")[0].style.display = "block";
              nom_class("adminbuttons")[0].style.display = "none";
  document.getElementById("changePassword").style.display = "block"
 }
 else
 {
  nom_class("adminCompteConfirm")[0].style.display = "none";
  nom_class("adminbuttons")[0].style.display = "block";
  document.getElementById("changePassword").style.display = "none"
 }


et j'ai testé pour etre sur que sa fonctionne donc apres a voir si le problème ne vient pas d'ailleurs


le fichier de teste
<!DOCTYPE html>

<title>source javascript</title>
<script type="text/javascript">

function nom_class(nom){

var classel=document.body.getElementsByTagName('*');
var elem=[];
  for (var j=0;j<classel.length;j++){
  
  if(classel[j].className==nom){
  
 elem.push(classel[j]);
  }
  }
  return elem;
}

function retour(){
alert(nom_class('df')[1].id);
nom_class('df')[2].style.display = "none";
}

</script>

</head>
<body>

<div class='df' style='height:300px;width:300px;background-color:gray'>
<div class='df' id='dv2' style='height:200px;width:200px;background-color:blue'>
<div class='df' style='height:100px;width:100px;background-color:red'>
du texte du texte du texte du texte du texte du texte du texte du texte 
</div>
</div>
</div>
<br>
<button onclick='retour()'>classname</button>
</body>
</html>

--
0
Vanuch Messages postés 6 Date d'inscription mercredi 21 août 2013 Statut Membre Dernière intervention 17 septembre 2013
17 sept. 2013 à 17:18
ça fonctionne!!! merci beaucoup!! :)
0
Rejoignez-nous