script fonctionne avec Firefox mais boucle sous IE6
Bonjour,
Voici ma page html complète :
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 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>test</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="pragma" content="no-cache">
<style type="text/css">
ul,li{list-style:none;}
</style>
<script language="JavaScript">
<!--
var expanded = null;
var memopen = null;
var expandedsubs;
var memosubs;
function SwitchMenu(id){
var expand = document.getElementById(id);
if(expand.style.display != "block"){
//open
if(expanded != null){ //if a menu is already shown
//is there a memo ?
if(memopen != null){
//yes :
//am I a sub of memo ?
var issub = false;
memosubs = memopen.getElementsByTagName("ul");
for (var i=0; i<memosubs.length; i++){
if(memosubs.id == expand.id){issub = true;}
}
if(issub == true){
//yes :
//close expanded
expanded.style.display = "none";
// memo stray the same
}else{
//no :
//close memo and all its subs
memopen.style.display = "none";
memosubs = memopen.getElementsByTagName("ul");
for (var i=0; i<memosubs.length; i++){
memosubs.style.display = "none";
}
//destroy memo pointer
memopen = null;
}
}else{
//no :
//is current menu a sub of expanded ?
var issub = false;
expandedsubs = expanded.getElementsByTagName("ul");
for (var i=0; i<expandedsubs.length; i++){
if(expandedsubs.id == expand.id){issub = true;}
}
if(issub == true){
//yes :
//dont close expanded
memopen = expanded;
//memo becomes expanded
}else{
//no :
//close expanded
expanded.style.display = "none";
}
}
}
//show current menu
expand.style.display = "block";
//expanded becomes expand
expanded = expand;
}else{
expand.style.display = "none";
}
}
</script>
</head>
<body>
<div id='LayerNav' style='position:absolute; left:-30px; z-index:1'>
<ul id='menulink'>
<li onclick="SwitchMenu('menu1')"><a href="#">menu1</a></li>
<ul id='menu1' style='display:none; text-indent:-35px'>
<li onclick="SwitchMenu('submenu11')"><a href="#">submenu11</a></li>
<ul id='submenu11' style='display:none; text-indent:-65px'>
<li><a href="www.google.com">link1</a></li>
<li><a href="www.google.com">link2</a></li>
</ul>
<li onclick="SwitchMenu('submenu12')"><a href="#">submenu12</a></li>
<ul id='submenu12' style='display:none; text-indent:-65px'>
<li><a href="www.google.com">link1</a></li>
</ul>
</ul>
<li onclick="SwitchMenu('menu2')"><a href="#">menu2</a></li>
<ul id='menu2' style='display:none; text-indent:-35px'>
<li onclick="SwitchMenu('submenu21')"><a href="#">submenu21</a></li>
<ul id='submenu21' style='display:none; text-indent:-65px'>
<li><a href="www.google.com">link1</a></li>
<li><a href="www.google.com">link2</a></li>
</ul>
<li onclick="SwitchMenu('submenu22')"><a href="#">submenu22</a></li>
<ul id='submenu22' style='display:none; text-indent:-65px'>
<li><a href="www.google.com">link1</a></li>
</ul>
</ul>
</ul>
</div>
</body>
</html> |
Tout fonctionne sous Firefox mais avec IE il semble que la fonction est appelée 2 fois de suite !
Je ne comprend vraiment pas le problème.
Merci de votre aide.