【问题标题】:Bootstrap: "Cannot read property 'offsetWidth' of undefined" error with carouselBootstrap:“无法读取未定义的属性‘offsetWidth’”错误与轮播
【发布时间】:2015-06-15 12:58:59
【问题描述】:

我在轮播 Bootstrap 中使用多个:

<div id="carousel-586" class="carousel slide carousel-block" data-ride="carousel">
    <ol class="carousel-indicators">
        <li data-target="#carousel-586" data-slide-to="0" class="active"></li>
        <li data-target="#carousel-586" data-slide-to="1"></li>
        <li data-target="#carousel-586" data-slide-to="2"></li>
    </ol>
    <div class="carousel-inner" role="listbox">
        <div class="item active">
            <img src="..." alt="...">
        </div>
        <div class="item">
            <img src="..." alt="...">
        </div>
        <div class="item">
            <img src="..." alt="...">
        </div>
    </div>
    <!-- Controls -->
    <a class="left carousel-control" href="#carousel-586" role="button" data-slide="prev">
        <span class="glyphicon glyphicon-chevron-left"></span>
        <span class="sr-only">Previous</span>
    </a>
    <a class="right carousel-control" href="#carousel-586" role="button" data-slide="next">
        <span class="glyphicon glyphicon-chevron-right"></span>
        <span class="sr-only">Next</span>
    </a>
</div>

但是,我在 JavaScript 中收到错误:

未捕获的类型错误:无法读取未定义的属性“offsetWidth”

我发现了一些类似的问题(12),但它们似乎不适用于我。

尽管出现错误,轮播功能没有问题,但我更想知道导致错误的原因并修复它们。

任何建议都会很棒。

【问题讨论】:

标签: javascript twitter-bootstrap-3


【解决方案1】:

我发现这个问题在谷歌上搜索相同的问题。我有三个不同的轮播显示在同一个容器 div 元素中。我使用 jQuery.toggle() 将其中两个隐藏起来,并且当时只显示其中一个。用户可以使用切换按钮在不同的轮播之间切换。

虽然这个问题没有解决我的问题,但我想我会分享我的解决方案,让下一个遇到这个问题的人。显然,您必须在所有三个 carousels 上设置“活动”类,无论它们是否可见。我最终得到了以下标记(基本上)。

<div id="carousel-container">
    <div id="carousel1" class="carousel slide" data-ride="carousel">
        <ol class="carousel-indicators">
            <li class="active" data-target="#carousel1" data-slide-to="1"></li>
             <li data-target="#carousel1" data-slide-to="2"></li>
         </ol>
         <div class="carousel-inner" role="listbox">
             <div class="item active">...</div>
             <div class="item">...</div>
         </div>
    </div>
    <div id="carousel2" class="carousel slide" data-ride="carousel" style="display:none;">
         <ol class="carousel-indicators">
             <li class="active" data-target="#carousel2" data-slide-to="1"></li>
             <li data-target="#carousel2" data-slide-to="2"></li>
         </ol>
         <div class="carousel-inner" role="listbox">
             <div class="item active">...</div>
             <div class="item">...</div>
         </div>
    </div>
    <div id="carousel3" class="carousel slide" data-ride="carousel" style="display:none;">
        <ol class="carousel-indicators">
            <li class="active" data-target="#carousel3" data-slide-to="1"></li>
            <li data-target="#carousel3" data-slide-to="2"></li>
         </ol>
         <div class="carousel-inner" role="listbox">
             <div class="item active">...</div>
             <div class="item">...</div>
         </div>
    </div>
</div>

重点是,尽管 id 为“carousel2”和“carousel3”的 div 都将其显示属性设置为“none”,但它们仍然需要具有“active”类的元素(以及相应的导航/轮播指标)。希望它可以帮助某人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-15
    • 1970-01-01
    • 1970-01-01
    • 2018-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多