yhugo Posté 12 Octobre 2006 Posté 12 Octobre 2006 (modifié) Bonjour tous, J'ai une page html qui contient 2 javascript différents ... les 2 utilises la commande "window.onload" et ça empêche un des 2 scripts de fonctionner Comment s'y prendre pour les faire cohabiter ? Merci et bonne fin de journée yhugo PS_Je suis débutant en JavaScript Modifié 12 Octobre 2006 par yhugo
georges Posté 12 Octobre 2006 Posté 12 Octobre 2006 salut, il doit y avoir 2 (ou plus) variables communes (enfin dont les noms sont communs) aux 2 scripts : il te suffra de modifier ce nom de variable dans l'un des 2 scripts et tout ira bien
yhugo Posté 12 Octobre 2006 Auteur Posté 12 Octobre 2006 salut, il doit y avoir 2 (ou plus) variables communes (enfin dont les noms sont communs) aux 2 scripts : il te suffra de modifier ce nom de variable dans l'un des 2 scripts et tout ira bien Salut Georges, j'ai regardé et aucune variable semble en doublon ... <script type="text/javascript">//<![CDATA[<!-- 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> <script type="text/javascript">//<![CDATA[<!-- /************************************************ Conveyor belt slideshow script- © Dynamic Drive DHTML code library (www.dynamicdrive.com)* This notice MUST stay intact for legal use* Visit Dynamic Drive at [url="http://www.dynamicdrive.com/"]http://www.dynamicdrive.com/[/url] for full source code***********************************************///Specify the slider's width (in pixels)var sliderwidth="490px"//Specify the slider's heightvar sliderheight="175px"//Specify the slider's slide speed (larger is faster 1-10)var slidespeed=1//configure background color:slidebgcolor="#FFFFFF"//Specify the slider's imagesvar leftrightslide=new Array()var finalslide=''leftrightslide[0]='<img src="images/projets/smenu1_foto1.jpg" alt="image" />'leftrightslide[1]='<img src="images/projets/smenu1_foto2.jpg" alt="image" />'leftrightslide[2]='<img src="images/projets/smenu2_foto1.jpg" alt="image" />'leftrightslide[3]='<img src="images/projets/smenu2_foto2.jpg" alt="image" />'leftrightslide[4]='<img src="images/projets/smenu3_foto1.jpg" alt="image" />'leftrightslide[5]='<img src="images/projets/smenu3_foto2.jpg" alt="image" />'leftrightslide[6]='<img src="images/projets/smenu4_foto1.jpg" alt="image" />'leftrightslide[7]='<img src="images/projets/smenu4_foto2.jpg" alt="image" />'leftrightslide[8]='<img src="images/projets/smenu5_foto1.jpg" alt="image" />'leftrightslide[9]='<img src="images/projets/smenu5_foto2.jpg" alt="image" />'leftrightslide[10]='<img src="images/projets/smenu5_foto3.jpg" alt="image" />'leftrightslide[11]='<img src="images/projets/smenu5_foto4.jpg" alt="image" />'//Specify gap between each image (use HTML):var imagegap=" "//Specify pixels gap between each slideshow rotation (use integer):var slideshowgap=3////NO NEED TO EDIT BELOW THIS LINE////////////var copyspeed=slidespeedleftrightslide='<span style="white-space: nowrap;">'+leftrightslide.join(imagegap)+'<\/span>'var iedom=document.all||document.getElementByIdif (iedom)document.write('<span id="temp" style="visibility:hidden;position:absolute;top:-100px;left:-9000px;">'+leftrightslide+'<\/span>')var actualwidth=''var cross_slide, ns_slidefunction fillup(){if (iedom){cross_slide=document.getElementById? document.getElementById("test2") : document.all.test2cross_slide2=document.getElementById? document.getElementById("test3") : document.all.test3cross_slide.innerHTML=cross_slide2.innerHTML=leftrightslideactualwidth=document.all? cross_slide.offsetWidth : document.getElementById("temp").offsetWidthcross_slide2.style.left=actualwidth+slideshowgap+"px"}else if (document.layers){ns_slide=document.ns_slidemenu.document.ns_slidemenu2ns_slide2=document.ns_slidemenu.document.ns_slidemenu3ns_slide.document.write(leftrightslide)ns_slide.document.close()actualwidth=ns_slide.document.widthns_slide2.left=actualwidth+slideshowgapns_slide2.document.write(leftrightslide)ns_slide2.document.close()}lefttime=setInterval("slideleft()",30)}window.onload=fillupfunction slideleft(){if (iedom){if (parseInt(cross_slide.style.left)>(actualwidth*(-1)+8))cross_slide.style.left=parseInt(cross_slide.style.left)-copyspeed+"px"elsecross_slide.style.left=parseInt(cross_slide2.style.left)+actualwidth+slideshowgap+"px"if (parseInt(cross_slide2.style.left)>(actualwidth*(-1)+8))cross_slide2.style.left=parseInt(cross_slide2.style.left)-copyspeed+"px"elsecross_slide2.style.left=parseInt(cross_slide.style.left)+actualwidth+slideshowgap+"px"}else if (document.layers){if (ns_slide.left>(actualwidth*(-1)+8))ns_slide.left-=copyspeedelsens_slide.left=ns_slide2.left+actualwidth+slideshowgapif (ns_slide2.left>(actualwidth*(-1)+8))ns_slide2.left-=copyspeedelsens_slide2.left=ns_slide.left+actualwidth+slideshowgap}}if (iedom||document.layers){with (document){document.write('')if (iedom){write('<div style="position:relative;width:'+sliderwidth+';height:'+sliderheight+';overflow:hidden">')write('<div style="position:absolute;width:'+sliderwidth+';height:'+sliderheight+';background-color:'+slidebgcolor+'" onMouseover="copyspeed=0" onMouseout="copyspeed=slidespeed">')write('<div id="test2" style="position:absolute;left:0px;top:0px"><\/div>')write('<div id="test3" style="position:absolute;left:-1000px;top:0px"><\/div>')write('<\/div><\/div>')}else if (document.layers){write('<ilayer width='+sliderwidth+' height='+sliderheight+' name="ns_slidemenu" bgColor='+slidebgcolor+'>')write('<layer name="ns_slidemenu2" left=0 top=0 onMouseover="copyspeed=0" onMouseout="copyspeed=slidespeed"><\/layer>')write('<layer name="ns_slidemenu3" left=0 top=0 onMouseover="copyspeed=0" onMouseout="copyspeed=slidespeed"><\/layer>')write('<\/ilayer>')}document.write('')}}//-->//]]></script> Désolé pour ces bouts de code un peu long ... Merci
georges Posté 12 Octobre 2006 Posté 12 Octobre 2006 et tu es certain que les 2 fonctionnent séparément ? ce qui m'étonne, c'est que la fonction montre() attend un argument que le onload n'apporte pas...
yhugo Posté 12 Octobre 2006 Auteur Posté 12 Octobre 2006 et tu es certain que les 2 fonctionnent séparément ? ce qui m'étonne, c'est que la fonction montre() attend un argument que le onload n'apporte pas... Excuse-moi mais je ne comprends pas très bien ce que tu veux dire ... si j'inverse l'ordre des scripts dans la page, c'est le dernier qui apparaît dans le code qui marche ... et vice versa ... Voici ce que fait ce script, celui qui utilise la fonction montre() Merci
georges Posté 12 Octobre 2006 Posté 12 Octobre 2006 le script est appelé dans la page par <dt onclick="java script:montre();"><a href="#">Menu 1</a></dt> c'est certainement à ce niveau que tu t'emmêles les pinceaux..
AntiStatic Posté 13 Octobre 2006 Posté 13 Octobre 2006 (modifié) yo ! je pense que c'est peut-être tout simplement car tu ne peux pas avoir 2 appel avec window.onload dans une même fenêtre. Pour faire essayede faire un détour par une fonction comme ceci : window.onload = function() {montre();fillup();// toutes les actions onload ...} Ca marche ? Modifié 13 Octobre 2006 par AntiStatic
steph Posté 13 Octobre 2006 Posté 13 Octobre 2006 Tu peux aussi ajouter un évenement au onload pour chaque fonction que tu souhaites appeler au démarrage : function addLoadEvent(func) { var oldonload = window.onload; if (typeof window.onload != 'function') { window.onload = func; } else { window.onload = function() { oldonload(); func(); } }} C'est bien utile si tu utilises un script externe qui à déjà modifié le onload, dans ce cas, il fonctionnera encore. Steph
yhugo Posté 13 Octobre 2006 Auteur Posté 13 Octobre 2006 (modifié) Bon matin à tous Merci pour votre aide, j'ai opté finalement pour la proposition de AntiSatic et ça marche bien window.onload = function() {montre();fillup();// toutes les actions onload ...} Ce cas est donc résolu (Au fait, comment on fait pour indiquer Résolu à nos sujets ?) Bonne journée et bonne fin de semaine ! yhugo Modifié 13 Octobre 2006 par yhugo
captain_torche Posté 13 Octobre 2006 Posté 13 Octobre 2006 On ne met pas de [résolu] sur les sujets : ils pourraient décourager d'éventuelles lectures à quelqu'un qui ferait remonter le sujet. Sinon, pour les codes longs, il faut utiliser la balise CODEBOX. j'ai édité tes messages en ce sens.
yhugo Posté 13 Octobre 2006 Auteur Posté 13 Octobre 2006 Merci Captain, La balise s'écrit donc codebox ? J'aime bien ta citation en passant ... Salutations
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant