11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,
J'ai voulu installer ce menu trouvé sur ce site sur le mien
Smiley url http://css.alsacreations.com/xmedia/exemples/deroulant/menu-vertical.htm[/url]

Malheureusement le resultat obtenu n'est pas le meme. En effet les sous menus s'affichent tous des l'ouverture du site.

A piori, le probleme viendrait d'un autre javascript que j'aurai sur mon site, car des que je l'enleve ca marche.
C'est le script Clock de Maxxblade :

<script type="text/javascript">
// Clock Script Generated By Maxx Blade's Clock v2.0d
//  http://www.maxxblade.co.uk/clock
 
function tS(){ x=new Date(); x.setTime(x.getTime()); return x; } 
function lZ(x){ return (x>9)?x:'0'+x; } 
function tH(x){ if(x==0){ x=12; } return (x>12)?x-=12:x; } 
function dT(){ document.getElementById('tP').innerHTML=eval(oT); setTimeout('dT()',1000); } 
function aP(x){ return (x>11)?'pm':'am'; } 
function y4(x){ return (x<500)?x+1900:x; } 
var dN=new Array('Sun','Mon','Tue','Wed','Thu','Fri','Sat'),mN=new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'),oT="dN[tS().getDay()]+' '+lZ(tS().getDate())+' '+mN[tS().getMonth()]+' '+y4(tS().getYear())+' '+' '+' '+' '+lZ(tH(tS().getHours()))+':'+lZ(tS().getMinutes())+':'+lZ(tS().getSeconds())+aP(tS().getHours())";
if(!document.all){ window.onload=dT; }else{ dT(); }
</script>


Quelqu'un aurait-il une idee de ce qui cause le conflit ? Ne peut-on pas avoir plus d'un javascript sur le meme page ?

Merci de vos reponses.
Lu,

les scripts sont initialisés au chargement de la page. Sur le menu alsa tu as:


window.onload=montre; 


et sur ton script tu redéfinie ce comportement


window.onload=dT;


Pour ne pas provoquer de collision il te suffit d'appeler soit dt dans montre soit montre dans dt.
Merci d'avoir repondu si vite.
Malheureusement je n'y connais encore pas grand chose en javascript.
Ostensiblement, il ne doit y avoir qu'un seul window.onload par page.
Est-ce qu'une commande du genre
window.onload.onload=montre, dT;

fonctionnerait ?
Sinon je ne voit pas bien comment "appeler" une fonction dans l'autre.
Merci de ta reponse.
Un exemple:

window.onLoad=montre;


Puis dans la fonction montre :

function montre {
   dt(); 
};


dt(); sert à appeler la fonction dt et va exécuter le code de celle-ci. L'inverse est aussi valide, mais c'est à vérifier selon tes besoins :

function dt() {
montre();
};


Tu peux toujours appeler deux fonctions dans le onLoad, mais ici tu peux l'éviter.
Modifié par tidanone (11 Aug 2005 - 15:50)
C'est bon ca marche.
Merci bien pour votre aide a tous les deux.
Ya juste un petit truc bizarre, c'est que pdt que la page charge, les sous menus sont visibles et des que la page est completement chargée ils se "cachent".
Si vous avez une idee, je suis preneur. Sinon c'est pas trop grave.

Si vous voulez voir le pb :
www.chellat.com/mat
Modifié par thyeum (11 Aug 2005 - 20:40)
De rien!!

Désolé pour ton problème, peut-être qu'un autre pourra t'aider. N'hésite pas si tu as d'autres questions!
Alors oui il y a une solution, mais non tu ne pourras pas la mettre en place. Elle consistait à cacher via la feuille de style les liens. Néanmoins cela posera soucis pour les gens n'ayant pas activé javascript. Eux ne pourront pas les faire réapparaitre. C'est pourquoi au départ ils sont visibles et seulement si l'internaute a activé le javascript il pourra bénéficier de la fonctionnalité.

Tant pis Smiley smile