Divs不仅仅在IE中使用prototype.js隐藏

时间:2012-02-11 06:20:26

标签: javascript internet-explorer prototypejs

我正在尝试使用prototype.js做一些相当简单的隐藏/显示div。该页面在Firefox,Chrome和Safari中完全正常工作,但一个特定部分在IE中不起作用:div的初始隐藏。该页面有三个div,并且编写了javascript,以便您可以在它们之间切换,一次只显示一个。这部分在IE中工作正常,但由于某种原因,当首次加载页面时,它显示所有3个div。我已经尝试了很多东西来隐藏它们,让我知道这个当前的化身:

相关的HTML:

    <div class="linkbar">
        <a class='normal' href="JavaScript:void()" sec="map">Map</a><br><br>
        <a class='normal' href="JavaScript:void()" sec="tour">Tour</a><br><br>
        <a class='normal' href="JavaScript:void()" sec="vid">Videos</a><br><br>
    </div>

<div class="bg">
    <div class="section" id="map" sec="map">
        ...html here...
    </div>
    <div class="section" id="tour" sec="tour">
        ...html here...
    </div>
    <div class="section" id="vid" sec="vid">
        ...html here...
    </div>
</div>

相关的Javascript:

 document.observe('dom:loaded', function() {
    showSection("map");
    var currSection = 'map';

    $$('a.normal').each(function(p){
        Event.observe(p,'click',function(){
            var hr = $(this).readAttribute("sec");
            showSection(hr);
            currSection = hr;
        });
    });

    function showSection(sectionname){
        $$('div.section').each(function(d){
            d.hide();
        });
        $(sectionname).show();
    }
});

</script>

所以在IE中,只要我选择任何链接,它就会正确隐藏div,然后打开正确的div,这将向我表明它能够找到并隐藏div。但是,当我第一次在IE中加载页面时,它不会隐藏任何内容。关于为什么会这样的想法?

编辑:经过进一步研究,我认为这可能与IE的问题和检查DOM加载有关。

1 个答案:

答案 0 :(得分:0)

想出来。 Prototype.js捕获了堆栈溢出错误,然后在catch块中重新抛出相同的错误。出于某种原因,在IE中抛出它时,没有调用执行初始隐藏的代码。我进入了prototype.js,并在catch块中注释掉了重新抛出错误的行(828),现在情况正常。