2012-06-03 66 views
2

我有一个由index.php和otherpage.php组成的网站。这两个页面使用javascript奇怪的故障

include_once("header.inc")

header.inc实现这样

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

JScript的文件让我用一个漂亮的下拉菜单JScript文件。

的问题是,菜单只上正常工作的index.php,而不是otherpage.php

什么是真正让我的是,在otherpage.php它不是菜单不工作的话,那只是部分不起作用。菜单将突出显示,但不会下拉菜单。

您可以为自己

index.php

otherpage.php

看看是否有一些关于共享PHP页面,我应该知道之间JScript文件?

下面是菜单中的相关内容的JScript:

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; 
    var w = document.getElementById(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 
} 
}(); 

感谢您的时间

+0

那个javascript被混淆了 – Esailija

回答

2

在index.php页面中,你都忘了

<script type="text/javascript"> 
    var menu = new menu.dd("menu"); 
    menu.init("menu", "menuhover"); 
</script> 

把它在底部otherpage.php或将其放入footer.php以包含在页面的底部。

+0

啊啊谢谢你!解决了 –

1

似乎是第二页(未在index.php)不具有

<script type="text/javascript"> 
     var menu = new menu.dd("menu"); 
     menu.init("menu", "menuhover"); 
    </script> 

所以菜单没有建立。

1

index.php包括初始化你的菜单页面结束这段代码:

<script type="text/javascript"> 
     var menu = new menu.dd("menu"); 
     menu.init("menu", "menuhover"); 
    </script> 

otherpage.php不包括代码,使代码永远不会初始化并连上你的HTML。

顺便提一下,您可以通过在代码中的.init()方法中放置断点来自己调试此类问题。在index.php中,您会看到断点被击中,并且如果您查看调用堆栈,则可以看到它从哪里调用。如果你把相同的断点放在otherpage.php中,你可以看到它没有被击中,因此从未被调用过。