• Hey,

    I’ve got my website here and its based on the Monochrome theme by Mono-lab. My problem is the JavaScript that makes the dropdown menus seems to be bringing up some errors, which causes the menu bar to both defy all CSS and move to the left (it should be at the same height but on the right of the logo) and cause the dropdown menu to stop dropping down. Here is the Javascript code from the section called dropdown menu:

    /*
    dropdown menu
    */
    
    var menu=function(){
    var t=15,z=50,s=6,a;
    function dd(n){this.n=n; this.h=[]; this.c=[]}
    dd.prototype.init=function(p,c){
    a=c; //Old code: var w=document.getElementById(p), s=w.getElementsByTagName('ul'), l=s.length, i=0;
    
    var w=p, s=w.getElementsByTagName('ul'), l=s.length, i=0;
    for(i;i<l;i++){
    var h=s[i].parentNode; this.h[i]=h; this.c[i]=s[i];
    h.onmouseover=new Function(this.n+'.st('+i+',true)');
    h.onmouseout=new Function(this.n+'.st('+i+')');
    }
    }
    dd.prototype.st=function(x,f){
    var c=this.c[x], h=this.h[x], p=h.getElementsByTagName('a')[0];
    clearInterval(c.t); c.style.overflow='hidden';
    if(f){
    p.className+=' '+a;
    if(!c.mh){c.style.display='block'; c.style.height=''; c.mh=c.offsetHeight; c.style.height=0}
    if(c.mh==c.offsetHeight){c.style.overflow='visible'}
    else{c.style.zIndex=z; z++; c.t=setInterval(function(){sl(c,1)},t)}
    }else{p.className=p.className.replace(a,''); c.t=setInterval(function(){sl(c,-1)},t)}
    }
    function sl(c,f){
    var h=c.offsetHeight;
    if((h<=0&&f!=1)||(h>=c.mh&&f==1)){
    if(f==1){c.style.filter=''; c.style.opacity=1; c.style.overflow='visible'}
    clearInterval(c.t); return
    }
    var d=(f==1)?Math.ceil((c.mh-h)/s):Math.ceil(h/s), o=h/c.mh;
    c.style.opacity=o; c.style.filter='alpha(opacity='+(o*100)+')';
    c.style.height=h+(d*f)+'px'
    }
    return{dd:dd}
    }();
    
    document.getElementsByClassName = function (c, t) {
      t = this.getElementsByTagName(t ? t : "*");
      for (var i = 0, r = new Array(), l = t.length; i < l; i++)
        if (t[i].className == c)
          r[r.length] = t[i];
      return r;
    }
    
    var _Menus = new Array();
    function initializeDateDropDowns(){
    var box = document.getElementsByClassName('menu','ul');
    if (box.length > 0) {
    for(i = 0; i < box.length; i++) {
    var id = box[i];
    _Menus[i] = new menu.dd('_Menus[' + i + ']');
    _Menus[i].init(id,"menuhover");
    }
    }
    }
    window.onload = initializeDateDropDowns;

    Safari web inspector tells me that two things are wrong:

    TypeError: Result of expression ‘w.getElementsByTagName’ [undefined] is not a function.
    TypeError: Result of expression ‘menu.dd’ [undefined] is not a constructor.

    I have nearly no experience with Javascript so can’t really solve my problem. Any help would be fantastic.

    Thanks,
    Tom

The topic ‘Theme javascript causes errors’ is closed to new replies.