Conflit entre deux js dans une page HTML (inclure plusieurs js) [Résolu]

Signaler
Messages postés
16
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
19 septembre 2010
-
Messages postés
16
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
19 septembre 2010
-
Bonjour,


Je débute en javascript et j'ai présentement un problème dont je
n'arrive pas à trouver la solution... Ca fait déjà un bon moment que
j'essais un peu toutes les solutions que je trouve sur différents forum
et je n'y arrive pas... Alors voilà je m'explique.


J'ai deux fichiers (js) contenants du code JS (ça va de soit :p ) Les
deux codes fonctionnent séparément dans une page html, mais lorsque
j'appel les deux fichiers js dans ma page html, c'est soit l'un ou soit
l'autre qui marche...


Voici comment j'appel mes js dans ma page html:


<script type="text/javascript" src="js/zoom.js"></script>

<script type="text/javascript" src="js/menu_utram.js"></script>


et ce entre les balises <head></head>.


Voici maintenant le code de mes js:


menu_utram.js:


var object = new Array();

        function Slide(N,oCont){
        this.N  = N;
<!-- arrivée du menu par le haut-->    
        this.S  = -1.1;
<!-- arrivée du menu par le haut-->
        this.object = new Array();
        this.CObj = function (parent,N){
        this.parent = parent;
        this.N = N;
        this.obj = parent.frm[N];
        this.tit = this.obj.firstChild;
        this.div = this.obj.getElementsByTagName("div")[1];
        this.div.style.visibility = "hidden";
<!--espacement des section du menu à l'arrivée-->        
        this.y0 = N * 18;
<!--espacement des section du menu à l'arrivée-->            
        this.Y1 = this.y0;
        this.obj.style.top = this.y0;
        this.obj.style.height = parent.H - (parent.NF) * 18-0;
        this.obj.style.visibility = "visible";
        this.obj.parent = this;
        this.run = false;
        this.move = function(){
        with(this){
        dy = (y1-y0)/parent.S;
<!--.1 pour espace en bas de plan du site-->                
        if(Math.abs(dy)>.1){
<!--.1 pour espace en bas de plan du site-->                            
        y0+=dy;
        obj.style.top = Math.round(y0);
        setTimeout("object["+parent.N+"].object["+N+"].move();", 16);
        } else {
        run = false;
        if(dy>0)div.style.visibility="hidden";
        else if(N>0)parent.object[N-1].div.style.visibility="hidden";
        }
        }
        }

        this.obj.onmouseover = function(){
        with(this.parent){
        if(!run){
        run = true;
        div.style.visibility="visible";

        for(i=0;i<=N;i++){

        parent.object[i].y1 = i*18;
        parent.object[i].move();
        }
        for(i=N+1;i                
    this.object[0].obj.onmouseover();
<!--position des sections-->                

<!--vitesse d'apparition du menu-->                    
    this.S = 5;
<!--vitesse d'apparition du menu-->                    
}
window.onload function(){object[0] new Slide(0, "frames");

}




zoom.js:


var ym=0;
var my=0;

createElement = function(container, type, param){
    o=document.createElement(type);
    for(var j in param)o[j]=param[j];
    container.appendChild(o);
    return o;
}

mooz = {
    O:[],
    /////////
    mult:6,
    nbI:5,
    /////////
    rwh:0,
    imgsrc:0,
    W:0,
    B:0,

    Xoom:function(M){
        this.o = createElement(document.getElementById("zoom"), "spane", {
            'className':'spaneslides'
        });
        img = createElement(this.o, "img", {
            'className':"imgslides",
            'src':mooz.imgsrc[M%mooz.imgsrc.length].src
        });
        spa = createElement(this.o, "spane", {
            'className':"imgslides"
        });
        txt = createElement(spa, "spane", {
            'className':"txtslides",
            'innerHTML':mooz.imgsrc[M%mooz.imgsrc.length].title
        });
        this.M = 10000+M;
    },

    mainloop:function(){
        with(this){
            for(j=0; j<mooz.nbI; j++) {
                O[j].M += (ym-my)/8000;
                M = O[j].M%nbI;
                ti = Math.pow(mult,M);
                with(O[j].o.style){
                    left   = Math.round((W-(ti*rwh))/(W+ti)*(W*.5))+"px";
                    top    = Math.round((B-ti)/(B+ti)*(B*.5))+"px";
                    zIndex = Math.round(10000-ti*.1);
                    width  = Math.round(ti*rwh)+"px";
                    height = Math.round(ti)+"px";
                }
            }
        }
        setTimeout("mooz.mainloop();", 16);
    },

    oigres:function(){
        with(this){
            W = parseInt(document.getElementById("zoom").style.width);
            B = parseInt(document.getElementById("zoom").style.height);
            imgsrc = document.getElementById("images").getElementsByTagName("img");
            rwh = imgsrc[0].width/imgsrc[0].height;
            for(var j=0;j<nbI;j++) O[j] = new Xoom(j);
            mainloop();
        }
    }
}

document.onmousemove = function(e){
    if(window.event) e=window.event;
    ym = (e.y || e.clientY);
    if(ym/2>my)my=ym/2;
}

window.onload = function(){
    ym = my+50;
    mooz.oigres();
    
}



En fait mon problème c'est qu'il y a un seul des "trucs" qui marche à la fois. Les deux ne fonctionnent pas ensemble

5 réponses

Messages postés
1044
Date d'inscription
lundi 7 mars 2005
Statut
Membre
Dernière intervention
13 juillet 2010
7
Utilise les events handler pour exécuter plusieurs fonctions sur le même événement. C'est toujours plus clean et plus facile à gérer.

function addListener(element, type, expression)
{
if (window.addEventListener)
{
element.addEventListener(type, expression,false);
}
else if (window.attachEvent)
{
element.attachEvent('on' + type, expression);
}
}

function fonction_1()
{
object[0] = new Slide(0, "frames");
}

function fonction_2()
{
ym = my+50;
mooz.oigres();
}

addListener(window,"load",fonction_1);
addListener(window,"load",fonction_2);
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
Bonjour,

    c'est un souci qui ve devenir récurent...
   
...window.onload function(){object[0] new Slide(0, "frames");
...
window.onload = function(){
    ym = my+50;
    mooz.oigres();
...

    le 2ème onload efface le 1er.

    regrouper les 2 ... dans le 2ème... par exemple !

<hr />


Cordialement                Bul     [mon Site]     [M'écrire]



<hr />
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
oui... ou simplement :

function f1()
{    object[0] = new Slide(0, "frames");}
function f2()
{    ym = my+50;
    mooz.oigres();
}

...

window.onload = function()    { f1();
                                                  f2(); }

<hr /> Cordialement Bul [mon Site] [M'écrire]<hr />
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
13
HELLO
every

Je partage pleinement l'avis, et non la vie, de Arto_8000, j'utilise pour ma part
//---------------------------------------------
function Add_Event( obj_, event_, func_, mode_){
  if( obj_.addEventListener)
    obj_.addEventListener( event_, func_, mode_? mode_:false);
  else
    obj_.attachEvent( 'on'+event_, func_);
}

//======================================
//-- Ajout initialisation sur le onload
Add_Event( window, 'load', InitPage);

A quand un tuto à ce sujet...
;0)
Messages postés
16
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
19 septembre 2010

J'ai trouvé la solution qui ait vraiment génial et surtout très simple. En mettant des fuctions en fin de mes deux script js et en les appelant dans la balise body ... C'est clair qu'un petit tutoriel là dessus ça serait très bien parce que tous ceux et celles qui commencent en javascript doivent obligatoirement vouloir mettre deux scripts à un moment ou à un autre dans leur page html pour enrichir les possibilités...

En plus, je pense que java est génial et bc moins lourd que flash (swf) ... pour animer des sites...

Je pense que c'est l'un des premiers tuto qui devrait y avoir sur un site comme celui-ci...

Meerrrrccccccccccci à tous ceux et celles qui m'ont aidé...