2012-06-03 64 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中,你可以看到它沒有被擊中,因此從未被調用過。