2

index.php と otherpage.php で構成される Web サイトがあります。これらのページは両方とも

include_once("header.inc")

header.inc は、このような jscript ファイルを実装します

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

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
}
}();

御時間ありがとうございます

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>

otherpage.phpにはそのコードが含まれていないため、コードが初期化されず、HTML に接続されません。

.init()ちなみに、コード内のメソッドにブレークポイントを配置することで、この種の問題を自分でデバッグできます。ブレークポイントがヒットしたことがわかります。index.php呼び出しスタックを見ると、どこから呼び出されているかがわかります。に同じブレークポイントを配置するとotherpage.php、ヒットしていないため、呼び出されていないことがわかります。

于 2012-06-03T14:05:06.450 に答える
1

2 番目のページ (index.php ではない) には

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

そのため、メニューは作成されません。

于 2012-06-03T14:01:26.577 に答える