Menu Accordion en erreur sous IE

[Résolu]
Signaler
Messages postés
38
Date d'inscription
mardi 7 octobre 2008
Statut
Membre
Dernière intervention
17 avril 2009
-
Messages postés
38
Date d'inscription
mardi 7 octobre 2008
Statut
Membre
Dernière intervention
17 avril 2009
-

2 réponses

Messages postés
38
Date d'inscription
mardi 7 octobre 2008
Statut
Membre
Dernière intervention
17 avril 2009

J'ai trouvé mon erreur, elle dépendait finalement d'une autre partie, mes excuses pour le dérangement

j'en profite pour vous remercier du super boulot que vous faites ici
Bon web à tous et toutes
Messages postés
38
Date d'inscription
mardi 7 octobre 2008
Statut
Membre
Dernière intervention
17 avril 2009

oups, erreur dans mon post semble t'il, le re-voici :

Bonjour à tous et toutes

Je me permets de vous demander de l'aide car sous IE, le JS du menu déroulant animé 'accordion' me génère une erreur dans la barre de status : "terminé, mais il existe une erreur sur la page"
Le détail m'indique " null a la valeur Null ou n'est pas un objet "

Et le seul null que je connaisse, c'est moi !

Le script est appelé dans le head ainsi :
<script type="text/javascript" src="script.js"></script>

En toute fin du body, j'ai aussi cette partie, qui génère l'erreur :
<script type="text/javascript">
var slider1=new accordion.slider("slider1");
slider1.init("slider");
var slider2=new accordion.slider("slider2");
slider2.init("slider2",0,"open");
</script>
(Quand je la supprime, le message d'erreur disparait)

Voici le contenu de script.js :
var accordion=function(){
var tm=sp=10;
function slider(n){this.nm=n; this.arr=[]}
slider.prototype.init=function(t,c,k){
var a,h,s,l,i; a=document.getElementById(t); this.sl=k?k:'';
h=a.getElementsByTagName('dt'); s=a.getElementsByTagName('dd'); this.l=h.length;
for(i=0;i<this.l;i++){var d=h[i]; this.arr[i]=d; d.onclick=new Function(this.nm+'.pro(this)'); if(c==i){d.className=this.sl}}
l=s.length;
for(i=0;i<l;i++){var d=s[i]; d.mh=d.offsetHeight; if(c!=i){d.style.height=0; d.style.display='none'}}
}
slider.prototype.pro=function(d){
for(var i=0;i<this.l;i++){
var h=this.arr[i], s=h.nextSibling; s=s.nodeType!=1?s.nextSibling:s; clearInterval(s.tm);
if(h==d&&s.style.display=='none'){s.style.display=''; su(s,1); h.className=this.sl}
else if(s.style.display==''){su(s,-1); h.className=''}}
}
function su(c,f){c.tm=setInterval(function(){sl(c,f)},tm)}
function sl(c,f){
var h=c.offsetHeight, m=c.mh, d=f==1?m-h:h; c.style.height=h+(Math.ceil(d/sp)*f)+'px';
c.style.opacity=h/m; c.style.filter='alpha(opacity='+h*100/m+')';
if(f==1&&h>=m){clearInterval(c.tm)}else if(f!=1&&h==1){c.style.display='none'; clearInterval(c.tm)}
}
return{slider:slider}
}();

J'ai beau fouiller depuis + d'une heure, je n'ai pas les compétences pour trouver ce qui coince...
MERCI de votre aide