用于循环的Javascript在firefox中无法正常工作

用于循环的Javascript在firefox中无法正常工作,javascript,for-loop,Javascript,For Loop,我很可能遗漏了一些东西,或者完全做错了,但这一点javascript在Chrome和Safari中运行良好,只是在Firefox中不行。section.id(在if语句中)似乎没有更改,但始终返回section[0].id,无论它是否满足if语句条件 var localNavigation = { showTab: function (anchortags, anchors) { $(window).scroll(function () { var

我很可能遗漏了一些东西,或者完全做错了,但这一点javascript在Chrome和Safari中运行良好,只是在Firefox中不行。section.id(在if语句中)似乎没有更改,但始终返回section[0].id,无论它是否满足if语句条件

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();
var localNavigation={
显示选项卡:功能(锚定、锚定){
$(窗口)。滚动(函数(){
变量滚动条,i,section,sectionTop,sectionBottom,sectionColor,sectionTextColor,$section;
对于(i=0;i<0.length;i++){
scroller=document.body.scrollTop;
截面=锚[i];
$section=$(section);
sectionColor=$section.css(“背景色”);
sectionTextColor=$section.css(“颜色”);
sectionTop=section.offsetTop;
sectionBottom=section.offsetTop+section.offsetHeight;
如果((滚动条>区段顶部)&&(滚动条<区段底部)){
$(anchortags).removeClass(“选定”).css({
“背景色”:“透明”,
“颜色”:“#f5eed”
});
$(“#”+section.id+“_tab”).addClass(“选定”).css({
“背景色”:“+sectionColor+”,
“颜色”:“+sectionTextColor+”
});
console.log(section.id);
}
}
});
},
init:函数(){
var anchortags=$(“本地ul li a”),
锚定=$(“部分”);
localNavigation.showTab(主播标签、主播);
}
};
localNavigation.init();

再次检查您使用的文件是否正确

还可以尝试使用每个循环

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);
    }
});
锚。每个(功能(i,部分){
变量$section=$(section);
scroller=document.body.scrollTop;
sectionColor=$section.css(“背景色”);
sectionTextColor=$section.css(“颜色”);
sectionTop=$section.offsetTop;
sectionBottom=$section.offsetTop+$section.offsetHeight;
如果((滚动条>区段顶部)&&(滚动条<区段底部)){
console.log($section.id);
}
});

我看到您正在使用HTML5
标记。之前在StackOverflow上讨论过,很多版本的Firefox还不支持这个标签,所以您是否尝试过确保您使用的是最新版本的Firefox


如果失败,您可以尝试使用不同的标记编写代码吗?

因为
锚定
是一个jQuery对象,您可以使用
。each()
代替for循环不要问我为什么,而是使用
scroller=$(window).scrollTop()
而不是
scroller=document.body.scrollTop真的做到了。不过,约瑟夫,谢谢你推荐使用.each()方法。我(终于)在最新的Firefox中仍然使用了这个标签。我甚至试着回到Firefox 6上,它仍然有效。谢谢Larry,我确实按照你的建议使用了.each()函数——它并没有完全解决问题,但它确实帮助我更好地组织事情。