Problème avec style.display = "block" sur IE8 [Résolu]

Signaler
Messages postés
6
Date d'inscription
mercredi 21 août 2013
Statut
Membre
Dernière intervention
17 septembre 2013
-
Messages postés
6
Date d'inscription
mercredi 21 août 2013
Statut
Membre
Dernière intervention
17 septembre 2013
-
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

Messages postés
1782
Date d'inscription
vendredi 9 mai 2008
Statut
Modérateur
Dernière intervention
19 février 2021
119
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;
		}
		}


--
Messages postés
6
Date d'inscription
mercredi 21 août 2013
Statut
Membre
Dernière intervention
17 septembre 2013

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.
Messages postés
1782
Date d'inscription
vendredi 9 mai 2008
Statut
Modérateur
Dernière intervention
19 février 2021
119
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"
 }
}
Messages postés
6
Date d'inscription
mercredi 21 août 2013
Statut
Membre
Dernière intervention
17 septembre 2013

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 ... :(
Messages postés
1782
Date d'inscription
vendredi 9 mai 2008
Statut
Modérateur
Dernière intervention
19 février 2021
119
ils y a plusieurs elements qui on la meme class ?

--
Messages postés
6
Date d'inscription
mercredi 21 août 2013
Statut
Membre
Dernière intervention
17 septembre 2013

En fait j'utilise les classes adminCompteConfirm et adminbuttons dans plein d'autres fichiers html ...
Messages postés
1782
Date d'inscription
vendredi 9 mai 2008
Statut
Modérateur
Dernière intervention
19 février 2021
119
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>

--
Messages postés
6
Date d'inscription
mercredi 21 août 2013
Statut
Membre
Dernière intervention
17 septembre 2013

ça fonctionne!!! merci beaucoup!! :)