Script fonctionne sous firefox et safari mais pas sous IE !
J'ai fait un script pour mettre un div en "display: none" sous la condition : pas de <a> à l'intérieur d'un div subordonné. Je précise d'entrée que j'étais obligé de garder la structure du code html sur lequel porte le script :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| <h1 id="sortie">SORTIE STANDARD JS : </h1>
<div class="itemAttachPage">
<div class="itemAttachInterPage">
<a class="itemLnkAttachInterPage" href="#">Ceci est un lien interne</a>
</div>
<div class="itemAttachExterPage">
<a class="itemLnkAttachExterPage" href="http://www.apple.com" target="InfoelsaNetOutView">Ceci est un lien vers un super site</a>
</div>
<div class="itemAttachFilePage">
<a class="itemLnkAttachFilePage" href="#">Ceci est un PDF de test</a>
</div>
</div>
<div class="itemAttachPage" style="border: solid 1px;">
<div class="itemAttachInterPage">
</div>
<div class="itemAttachExterPage">
</div>
<div class="itemAttachFilePage">
</div>
</div> |
Le script:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| function supr()
{
var divs = document.getElementsByTagName('div'); // TABLEAU DIV
for(var i=0; i<divs.length; i++) // BOUCLE DIV
{
var classDiv = divs[i].className; // CLASSE DIV
if(classDiv == 'itemAttachPage') // TEST CLASSE DIV
{
var enfants = divs[i].childNodes; // TABLEAU ENFANTS
var presence = 0;
for(var u=0; u<enfants.length; u++) // BOUCLE ENFANTS
{
var classEnfant = enfants[u].className; // CLASSE ENFANT
if(classEnfant == 'itemAttachInterPage' || classEnfant == 'itemAttachExterPage' || classEnfant == 'itemAttachFilePage')// TEST CLASSE ENFANT
{
var enfants2 = enfants[u].childNodes;
for(var x=0; x<enfants2.length; x++)
{
var classEnfant2 = enfants2[x].className;
var nomNoeudEnfant2 = enfants2[x].nodeName;
document.getElementById("sortie").firstChild.appendData(" | "+nomNoeudEnfant2);
if( nomNoeudEnfant2 == "A")
presence = 1;
}
if(presence == 0)
{
var visu = document.createAttribute("style"); //On crée un noeud attribut de nom "style"
visu.nodeValue = "display: none"; //On lui affecte la valeur "display: none"
divs[i].setAttributeNode(visu); //On l'ajoute au noeuds attributs du div
}
}
}
}
}
} |
Alors, le problème c'est que ça fonctionne sous firefox mais pas sous ... IE biensur
up: J'ai testé sous mac/safari ça fonctionne aussi.
voila un exemple de ce que renvoi la sortie standard sous firefox ou safari : SORTIE STANDARD JS : | #text | A | #text | #text | A | #text | #text | A | #text | #text | A | #text | #text | A | #text | #text | A | #text | #text | A | #text | #text | A | #text | #text | A | #text | #text | A | #text | #text | A | #text | #text | A | #text | #text | #text | #text
Et là ce qui sort sous IE6 et 7 avec le même fichier : SORTIE STANDARD JS : | A | #text | A | #text | A | #text | A | #text | A | #text | A | #text | A | #text | A | #text | A | #text | A | #text | A | #text | A | #text
A+