隐藏/显示无法在Internet Explorer中工作

时间:2013-03-13 19:16:06

标签: javascript jquery html5 internet-explorer

概述

我正在创建一系列id为“cda2012_#”的div,其中#代表顺序。它们应该出现8.5秒并被序列中的下一个div替换。这些div将无限循环。在div加载后,下面的脚本在页面底部执行。

期望的效果

由id标记的特定div将按顺序无限循环。 (适用于FF / Chrome)

IE9中的错误

第一个div显示正常但第二个div不会显示,也不会循环回序列中的第一个div。

UDPATE: IE9中的问题是序列中的下一个div没有显示。在Firefox / Chrome中,div将无限循环8.5秒。

更新2:根据请求切换到div id和脚本中的_。仍然不会在IE9中依次拉下一个div。

更新3 :根据建议更新了被隐藏的div元素以具有背景颜色。这对IE9中的div之间的循环没有影响。

更新4:封装代码使用:j(function(){...});


解决方案

  • 将代码封装在j(function(){...});
  • 将“ - ”(连字符)切换为“_”(下划线)

感谢来自@ Beetroot-Beetroot

的输入
<script>
    var divs = j('div[id^="cda2012_"]').hide(),
        i = 0;

    (function cycle() { 
        divs.eq(i).fadeIn(450)
            .delay(8500)
            .fadeOut(450, cycle);

            i = ++i % divs.length;
    })();
</script>

这是一个示例div,它将出现在HTML中的脚本上方:

<div id="cda2012_1">
    <div id="table-hd">Project Title</div>
    <div id="table-bd">
        <span id="table-q">
            <img align="middle" alt="" src="http://aiawa.org/associations/12413/files/cda2012-hogue.png" />
            <hr id="table-hr" />
            Firm: <a href="http://lmnarchitects.com/" target="_blank">LMN</a><br />
            Photo: <a href="http://lmnarchitects.com/" target="_blank">LMN</a></span><span id="table-v"><br />
            <center>
                <span id="table-h2">Did you know?</span>
            </center><br />
            Students and faculty at Central Washington University can assemble wind turbines or test photovoltaic technologies on the &quot;working roof&quot; of their 92,000GSF LEED Platinum facility. <br />
        </span>
    </div>
</div>

4 个答案:

答案 0 :(得分:1)

我相信fadeIn [Out] - 影响CSS不透明度 - 在旧版本的IE中不起作用。

答案 1 :(得分:1)

我做了类似的事情,而代码(来自内存)是这样的:

j(function() {
    var projectContainer = j("#.....");//the parent div
    projectContainer.find('.projects').hide();//select by class
    var t_ref, allowCycle = true;
    function cycle() {
        projectContainer.find('.projects:last').hide().prependTo(projectContainer).fadeIn(450);
        if(allowCycle) t_ref = setTimeout(cycle, 8950);
    };
});

据我所知,IE(版本?)没有问题。

Vars t_refallowCycle允许在必要时停止循环。

答案 2 :(得分:0)

--------------阅读本文,了解如何修复FadeIN和FadeOUT功能---------------

它与IE需要进行不透明度和颜色变化的“过滤器”有关。

link :: http://www.kevinleary.net/jquery-fadein-fadeout-problems-in-internet-explorer/

答案 3 :(得分:-1)

只是为了快速思考问题所在:

  • 您使用的是哪个版本的IE浏览器?尝试更新。

  • 使用谷歌最新版本的JQuery。

  • *可能存在问题“因为浏览器理解javascript而不是独立的jQuery片段.jQuery将我们的代码转换为普通的javascript代码,以便浏览器可以解释我们所说的内容.Javascript库是快捷方式。 如果您在加载库本身之前加载库插件,那么该插件将被浏览器视为一堆mumbo-jumbo。这段代码意味着在加载库之前绝对没有任何意义。“*(来源于这里:: http://css-plus.com/2010/03/6-steps-to-take-if-your-jquery-is-not-working/

  • 希望这有帮助,IE无论如何都是一个染色浏览器。祝你好运。