0

私は何かを見逃しているか、これを完全に間違っている可能性がありますが、このJavaScriptのビットはChromeとSafariで正常に動作しますが、Firefoxでは動作しません. section.id (if ステートメント内) は変更されないように見えますが、if ステートメントの条件を満たしているかどうかに関係なく、常に section[0].id を返します。

var localNavigation = {
    showTab: function (anchortags, anchors) {
        $(window).scroll(function () {
            var scroller, i, section, sectionTop, sectionBottom, sectionColor, sectionTextColor, $section;
            for (i = 0; i < anchors.length; i++) {
                scroller = document.body.scrollTop;
                section = anchors[i];
                $section = $(section);
                sectionColor = $section.css("background-color");
                sectionTextColor = $section.css("color");
                sectionTop = section.offsetTop;
                sectionBottom = section.offsetTop + section.offsetHeight;
                if ((scroller > sectionTop) && (scroller < sectionBottom)) {
                    $(anchortags).removeClass("selected").css({
                        "background-color": "transparent",
                        "color": "#f5eeed"
                    });
                    $("#" + section.id + "_tab").addClass("selected").css({
                        "background-color": "" + sectionColor + "",
                        "color": "" + sectionTextColor + ""
                    });
                    console.log(section.id);
                }
            }
        });
    },
    init: function () {
        var anchortags = $("#local ul li a"),
            anchors = $("section");
        localNavigation.showTab(anchortags, anchors);
    }
};
localNavigation.init();
4

2 に答える 2

0

正しいファイルで作業していることを再確認してください。

また、それぞれを使用してループを試してください。

anchors.each(function( i, section ){
    var $section = $(section);
    scroller = document.body.scrollTop;
    sectionColor = $section.css("background-color");
    sectionTextColor = $section.css("color");
    sectionTop = $section.offsetTop;
    sectionBottom = $section.offsetTop + $section.offsetHeight;
    if ((scroller > sectionTop) && (scroller < sectionBottom)) {
        console.log($section.id);
    }
});
于 2012-05-22T14:36:41.510 に答える
0

HTML 5<section>タグを使用しているようです。Firefox の多くのバージョンがまだこのタグをサポートしていないことが StackOverflow で以前に議論されたので、最新バージョンの Firefox を使用していることを確認してみましたか?

それができない場合は、別のタグでコードを試すことができますか?

于 2012-05-22T14:38:09.560 に答える