Conflit entre deux js dans une page HTML (inclure plusieurs js)

Résolu
karinemariejeanne Messages postés 16 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 19 septembre 2010 - 28 juin 2007 à 15:49
karinemariejeanne Messages postés 16 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 19 septembre 2010 - 28 juin 2007 à 19:55
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

Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 7
28 juin 2007 à 16:16
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);
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
28 juin 2007 à 16:08
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 />
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
28 juin 2007 à 16:40
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 />
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
28 juin 2007 à 19:37
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)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
karinemariejeanne Messages postés 16 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 19 septembre 2010
28 juin 2007 à 19:55
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é...
0
Rejoignez-nous
A voir également