11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour^^

à partir d'un modéle d'onglets des tutos d'alsacréations, je voulais réaliser une zone d'affichage/masquage de divs.

Soit le code source suivant:


<script type="text/javascript">
<!--
window.onload=montre;
function montre(id) {
var d = document.getElementById(id);
	for (var i = 1; i<=10; i++) {
		if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
	}
if (d) {d.style.display='block';}
}
//-->
</script>
<style type="text/css">
body {
margin: 10px;
}
#menu {
padding: 0px;
width: 200px;
margin: 0 auto;
}
#smenu2, #smenu3 {
display:none;
}
</style>
</head>
<body>

<div id="menu">

<div style="float: left; width: 100px;">
<div id="smenu1">Contenu 1</div>
<div id="smenu2">Contenu 2</div>
<div id="smenu3">Contenu 3</div>
</div>

<div style="float: left; width: 100px;">
<a href="#" onclick="montre('smenu1');">Onglet 1</a><br />
<a href="#" onclick="montre('smenu2');">Onglet 2</a><br />
<a href="#" onclick="montre('smenu3');">Onglet 3</a>

</div>


je souhaite que le div "smenu1" soit affiché dés le début, je l'ai donc exlus des "display: none;" en css (pour régler le problème de l'affichage de tous les divs de contenu dés le début), mais celui-ci disparait après une seconde..
comment faire?

merci d'avance,
++
Modifié par GrosRobert (10 Nov 2006 - 22:21)
Bonjour,

Je n'aimerais pas dire de bêtise, mais la fonction montre() chargé grâce au window.onload initialise chaque sous-menus en display:none;.
Par conséquent, à ta place j'essairais ceci :
- supprimer le préchargement de la fonction en enlevant window.onlad
- initialiser les sous menus 2 et 3 en display :none; (comme c'est déjà le cas)
- et initialiser le sous menu 1 en display:block;
Smiley cligne