Bonjour,
Mon script fonctionne sous Firefox mais je désespère de réussir à le faire fonctionner sous IE...
[/i][/i][/i][/i][/i][/i][/i] Je n'arrive pas à trouver quelle est l'erreur...
Modifié par xephres (25 Jan 2010 - 13:38)
Mon script fonctionne sous Firefox mais je désespère de réussir à le faire fonctionner sous IE...
<script type="text/javascript">
function main() {
var addEvent = listener;
addEvent(document, "click", hidder)
}
function listener(obj,evType,fn)
{
if(obj.addEventListener)
{
obj.addEventListener(evType,fn,false);
}
else if(obj.attachEvent)
{
obj.attachEvent("on"+evType,fn) ;
}
}
function hidder(e)
{
if(!e) e=window.event
var el = e.target || e.srcElement;
var over_id = el.id;
var class_css = new Array();
menu_num = 3;
rules_num = document.styleSheets[0].cssRules.length || document.styleSheets[0].rules.length;
/* Les boucles suivantes permetent d'établir la correspondance entre les classes html et les classes css*/
for (j=0; j< rules_num; j++)
{
rules_name = document.styleSheets[0].cssRules[j].cssText.substr(0,8) || document.styleSheets[0].rules[j].cssText.substr(0,8);/*récupération du nom des classes*/
for (i=1; i<=menu_num; i++)
{
ss_mn = '.ss_mn_'+i;
if(ss_mn === rules_name)
{
class_css[i] = j; /*on remplit le tableau des correspondances*/
}
}
}
/* boucle de déploiment - fermeture des menus */
for (i=1; i<=menu_num; i++)
{
mn = 'mn_'+i;
if(over_id === mn)
{
j = class_css[i];
texte = document.styleSheets[0].cssRules[j].style.height || document.styleSheets[0].rules[j].style.height;
maReg = new RegExp("[0-9]+", "g" ) ;
resultat = texte.match( maReg ) ;
height = parseInt(resultat[0]);
if(document.styleSheets[0].cssRules[j].style.display)
{
document.styleSheets[0].cssRules[j].style.display = 'block';
}
else if(document.styleSheets[0].rules[j].style.display)
{
document.styleSheets[0].rules[j].style.display = 'block';
}
ref = j ;
heighter(ref,height);
}
else
{
//document.styleSheets[0].cssRules[class_css[i]].style.height = 0;
texte2 = document.styleSheets[0].cssRules[class_css[i]].style.height || document.styleSheets[0].rules[class_css[i]].style.height;
maReg = new RegExp("[0-9]+", "g" ) ;
resultat2 = texte2.match( maReg ) ;
height2 = parseInt(resultat2[0]);
ref2 = class_css[i] ;
min_heighter(ref2,height2);
//document.styleSheets[0].cssRules[class_css[i]].style.display = 'none';
}
}
}
function heighter(ref,height) /* permet d'augementer la propriété height */
{
if(height <= 30)
{
new_height = height+1;
if(document.styleSheets[0].cssRules[ref].style.height)
{
document.styleSheets[0].cssRules[ref].style.height = new_height+'px' ;
}
else if(document.styleSheets[0].rules[ref].style.height)
{
document.styleSheets[0].rules[ref].style.height = new_height+'px' ;
}
setTimeout('heighter(ref,new_height)', 10);
}
}
function min_heighter(ref2,height2) /* permet de diminuer la propriété height */
{
if(height2 > 0)
{
new_height2 = height2-1;
if(document.styleSheets[0].cssRules[ref2].style.height)
{
document.styleSheets[0].cssRules[ref2].style.height = new_height2+'px' ;
}
else if(document.styleSheets[0].rules[ref2].style.height)
{
document.styleSheets[0].rules[ref2].style.height = new_height2+'px' ;
}
setTimeout('min_heighter(ref2,new_height2)', 10);
}
}
main();
[/i][/i][/i][/i][/i][/i][/i] Je n'arrive pas à trouver quelle est l'erreur...

Modifié par xephres (25 Jan 2010 - 13:38)