2

我有一个由 index.php 和 otherpage.php 组成的网站。这两个页面都使用

include_once("header.inc")

header.inc 实现了一个这样的 jscript 文件

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

jscript 文件让我可以使用一个漂亮的下拉菜单。

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

真正让我感动的是,在 otherpage.php 上,菜单根本不起作用,只是部分不起作用。菜单将突出显示但不是下拉菜单。

你可以自己看看

索引.php

其他页面.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
}
}();

谢谢你的时间

4

3 回答 3

2

在 index.php 页面上你忘记了

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

将其放在 otherpage.php 的底部或将其放在要包含在页面底部的 footer.php 中。

于 2012-06-03T14:00:06.193 回答
1

似乎第二页(不是 index.php)没有

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

所以没有创建菜单。

于 2012-06-03T14:01:26.577 回答
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,您可以看到它没有被命中,因此从未调用过。

于 2012-06-03T14:05:06.450 回答