SitePoint Sponsor

User Tag List

Results 1 to 4 of 4
  1. #1
    SitePoint Member
    Join Date
    Nov 2004
    Location
    Uppsala
    Posts
    5
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Unhappy Why doesn't this work outside of IE?

    I have omitted a browser check from the following code simply because it is not what seems to fault this script in all browsers except IE (all I have tested for: Netscape 7.2 and Firefox 1.0). Maybe I should also point out that I am not the author of the script and not exactly a wiz at Javascript therefore all help is appreciated.

    /Andreas

    /************************************************************************************
    Making cross-browser objects
    ************************************************************************************/
    function makeMenu(obj,nest){
    nest=(!nest) ? '':'document.'+nest+'.'
    this.css=(n) ? eval(nest+'document.'+obj):eval('document.all.'+obj+'.style')
    this.ref=(n) ? eval(nest+'document.'+obj+'.document'):eval('document');
    this.height=n?this.ref.height:eval(obj+'.offsetHeight')
    this.x=(n)? this.css.left:this.css.pixelLeft;this.y=(n)? this.css.top:this.css.pixelTop;
    this.hideIt=b_hideIt; this.showIt=b_showIt; this.vis=b_vis; this.moveIt=b_moveIt
    return this
    }
    function b_showIt(){this.css.visibility="visible"}
    function b_hideIt(){this.css.visibility="hidden"}
    function b_vis(){if(this.css.visibility=="hidden" || this.css.visibility=="hide") return true;}
    function b_moveIt(x,y){this.x=x; this.y=y; this.css.left=this.x; this.css.top=this.y}
    /************************************************************************************
    Initiating the page. Just add to the arrays here to get more menuitems
    and add divs in the page
    ************************************************************************************/
    function init(){
    oTop=new Array()
    oTop[0]=new makeMenu('divTop1','divCont')
    oTop[1]=new makeMenu('divTop2','divCont')
    oTop[2]=new makeMenu('divTop3','divCont')
    oTop[3]=new makeMenu('divTop4','divCont')
    oTop[4]=new makeMenu('divTop5','divCont')
    oTop[5]=new makeMenu('divTop6','divCont')
    oTop[6]=new makeMenu('divTop7','divCont')
    oTop[7]=new makeMenu('divTop8','divCont')
    oSub=new Array()
    oSub[0]=new makeMenu('divSub1','divCont.document.divTop1')
    oSub[1]=new makeMenu('divSub2','divCont.document.divTop2')
    oSub[2]=new makeMenu('divSub3','divCont.document.divTop3')
    oSub[3]=new makeMenu('divSub4','divCont.document.divTop4')
    oSub[4]=new makeMenu('divSub5','divCont.document.divTop5')
    oSub[5]=new makeMenu('divSub6','divCont.document.divTop6')
    oSub[6]=new makeMenu('divSub7','divCont.document.divTop7')
    oSub[7]=new makeMenu('divSub8','divCont.document.divTop8')
    for(i=0;i<oSub.length;i++){ oSub[i].hideIt() }
    for(i=1;i<oTop.length;i++){ oTop[i].moveIt(0,oTop[i-1].y+oTop[i-1].height) }
    }
    /************************************************************************************
    This is the function that changes the sub menus to folded or unfolded state.
    ************************************************************************************/
    function menu(num){
    if(1){
    if(!stayFolded){
    for(i=0;i<oSub.length;i++){
    if(i!=num){
    oSub[i].hideIt()
    oTop[i].ref["imgA"+i].src=unImg.src
    }
    }
    for(i=1;i<oTop.length;i++){
    oTop[i].moveIt(0,oTop[i-1].y+oTop[i-1].height)
    }
    }
    if(oSub[num].vis()){
    oSub[num].showIt()
    oTop[num].ref["imgA"+num].src=exImg.src
    }else{
    oSub[num].hideIt()
    oTop[num].ref["imgA"+num].src=unImg.src
    }
    for(i=1;i<oTop.length;i++){
    if(!oSub[i-1].vis()) oTop[i].moveIt(0,oTop[i-1].y+oTop[i-1].height+oSub[i-1].height)
    else oTop[i].moveIt(0,oTop[i-1].y+oTop[i-1].height)
    }
    }
    }
    //Initiating the menus onload, if it's a 4.x+ browser.
    if(1) onload=init;


    function menu2(num){
    if(1){
    if(!stayFolded){
    for(i=0;i<oSub.length;i++){
    if(i!=num){
    oSub[i].hideIt()
    oTop[i].ref["imgA"+i].src=unImg.src
    }
    }
    for(i=1;i<oTop.length;i++){
    oTop[i].moveIt(0,oTop[i-1].y+oTop[i-1].height)
    }
    }
    if(oSub[num].vis()){

    oTop[num].ref["imgA"+num].src=exImg.src
    }else{
    oSub[num].hideIt()
    oTop[num].ref["imgA"+num].src=unImg.src
    }
    for(i=1;i<oTop.length;i++){
    if(!oSub[i-1].vis()) oTop[i].moveIt(0,oTop[i-1].y+oTop[i-1].height+oSub[i-1].height)
    else oTop[i].moveIt(0,oTop[i-1].y+oTop[i-1].height)
    }
    }
    }

  2. #2
    SitePoint Member
    Join Date
    Nov 2004
    Location
    Uppsala
    Posts
    5
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    just to clarify I substituted the browser check for the "1" in "if(1)", works either way in IE and not in the forementioned browsers.

  3. #3
    He's No Good To Me Dead silver trophybronze trophy stymiee's Avatar
    Join Date
    Feb 2003
    Location
    Slave I
    Posts
    23,426
    Mentioned
    2 Post(s)
    Tagged
    1 Thread(s)
    Have you tested it in Firefox? The built in JavaScript console will tell you if there is an error that affects it.

  4. #4
    SitePoint Member
    Join Date
    Nov 2004
    Location
    Uppsala
    Posts
    5
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Thanks, just installed Firefox so I hadn't checked that feature out . It wants document.getElementById() instead of document.all, can I just substitute my document.all for document.getElementById() or is there something else I need to do?


Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •