2012-02-11 34 views
0

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

相关的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浏览器,只要我选择了任何链接,它正确隐藏了divs,然后打开正确的链接,这会向我表明它能够找到并隐藏div。但是,当我第一次在IE中加载页面时,它不会隐藏任何内容。为什么会发生这种情况的想法?

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

+1

发布解决方案作为答案,并从标题中删除'[Solved]'标签。这不是论坛,而是问答网站。问题和答案,每个都在自己的帖子中。 – 2012-02-11 21:30:46

+0

谢谢你让我知道。改变。 – FunkyDelPueblo 2012-02-12 00:47:36

回答

0

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