cs_AlexN
Messages postés694Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention 8 janvier 2014
-
11 sept. 2008 à 10:46
cs_AlexN
Messages postés694Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention 8 janvier 2014
-
11 sept. 2008 à 17:32
Bonjour,
Je cherche à ajouter un comportement supplémentaire à NodeList pour trier directement des noeuds en fonction de leur contenus. Ca marche partout SAUF dans internet explorer. Quelqu'un saurait-t-il me dire pourquoi ?
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Insert title here</title>
<script type="text/javascript">
/**
* Comportement supplémentaire à ajouter à NodeList, ce comportement gère les tris
* à la manière des tableaux.
**/
NodeList.prototype.sort=function(sortFunction){
if(this.length<=0) return;
var parent=this.item(0).parentNode;
var childArray=new Array();
while(this.length>0){
childArray.push(this.item(0));
parent.removeChild(this.item(0));
}
childArray.sort(sortFunction);
for(var i=0;i<childArray.length;i++){
parent.appendChild(childArray[i]);
}
}
/**
* Fonction qui permet de trier deux noeuds DIV en fonction du texte qu'il contiennent. Elle considère tout élément
* qui n'est pas un élément (donc pas un DIV), comme un élément "faible".
**/
function triAlphabetique(elt1,elt2){
// Si les DEUX noeuds ne sont PAS des éléments (ce sont des commentaires ou des espaces), on les considère égaux
if(elt1.nodeType!=1&&elt2.nodeType!=1) return 0;
// Si le premier noeud n'est PAS un élément il est considéré systématiquement comme inférieur
if(elt1.nodeType!=1) return -1;
// Si le second noeud n'est PAS un élément il est considéré systématiquement comme inférieur
if(elt2.nodeType!=1) return +1;
// On teste le texte inséré dans les éléments
if(elt1.firstChild.nodeValue<elt2.firstChild.nodeValue) return -1;
if(elt2.firstChild.nodeValue<elt1.firstChild.nodeValue) return +1;
// Si il n'y a pas de différence c'est donc égal
return 0;
}
/**
* Fonction lancée au chargement de la page.
**/
function init(){
var div=document.getElementById("div");
div.childNodes.sort(triAlphabetique);
}
</script>
</head>
cs_AlexN
Messages postés694Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention 8 janvier 201419 11 sept. 2008 à 17:32
Ca n'a pas l'air possible, on dirait...
Je pense que les concepteurs d'internet explorer ont bien compris un truc : "les standards c'est pas pour les chiens !!"
Je n'ai qu'un mot à dire "RESPECT !!"