【问题标题】:Carousel slider does not work after bootstrap 4 update with引导程序 4 更新后,轮播滑块不起作用
【发布时间】:2020-10-06 18:47:04
【问题描述】:

我正在尝试将引导程序从 3.3.4 升级到 4.1.3。为此,我刚刚用 4.1.3 替换了 bootstrap.js 的内容。我希望就是这样,但是,在这样做之后,滑块不起作用。轮播出现,但图像不滑动,控件也不起作用。 我知道已经回答了类似的问题,但相信我,他们没有为我工作。我已经为此苦苦挣扎了 3 天,所以在这里发布以防有人可以指出我正确的方向。

jquery-v3.3.1.html

<script src='<%=Server.getApplURL()%>/../common/JS/jquery/v-3.3.1/jquery-3.3.1.min.js'></script>

现在这个文件包含在头文件中 header.jsp

<%@include file="/../jshtml/jquery-v3.3.1.html"%>
<script src="<%=ServerSupportUtil.getApplURL() %>/kay/js/vendor/modernizr-2.8.3.min.js"></script>
<script src="<%=ServerSupportUtil.getApplURL() %>/kay/js/jquery.min.min.js"></script>
<script src="<%=ServerSupportUtil.getApplURL() %>/kay/js/popper.min.js"></script>
<script src="<%=ServerSupportUtil.getApplURL() %>/kay/js/bootstrap.js"></script>
<script src="<%=ServerSupportUtil.getApplURL() %>/kay/js/plugins.js"></script>

<!-- Scripts that run onLoad -->
<script>

$('.carousel').carousel({});
</script>

现在,这个头文件包含在包含轮播代码的主 jsp 页面中。我认为这足以确保 bootstrap.js、popper.js 和 jquery.js 可用于代码。 我改变了一些东西,现在两张幻灯片都是一样的。这段代码也不起作用。

问题:

  • 这个轮播不起作用,我在 Chrome 开发工具的任何地方也看不到任何错误。关于如何查看真正的错误有什么建议吗?

home.jsp

<%@ include file="../common/header.jsp"%>

                <div id="carousel-main" class="carousel slide" data-ride="carousel" data-interval="5000" data-pause="hover">
                    <!-- Indicators -->
                    <ul class="carousel-indicators">
                        <%
                            while(itr.hasNext())
                            {
                                com.SliderDetailsBn sliderbn = (com.SliderDetailsBn)itr.next();
                                if(sliderCounter == 0)
                                {
                          %>
                        <li data-target="#carousel-main" data-slide-to="<%=sliderCounter %>" class="active"></li>
                        <%
                                }
                                else
                                {
                            %>
                        <li data-target="#carousel-main" data-slide-to="<%=sliderCounter %>"></li>
                        <%
                                }
                                sliderCounter++;
                            }
                            %>
                    </ul>

                    <!-- Wrapper for slides -->
                    <div class="carousel-inner">
                        <%
                          sliderCounter = 0;
                          itr = SliderDtlsList.iterator();
                          while(itr.hasNext())
                          {
                              com.SliderDetailsBn sliderbn = (com.SliderDetailsBn)itr.next();
                              String imagepath = sliderbn.getFilePath();
                              String sliderUrl = sliderbn.PathUrl();
                              String sliderType = sliderbn.getFileType();

                              DelimitedString altText = new DelimitedString( sliderbn.getAltText());
                              String actualAltText = altText.getString(1);
                              String headerAltText = altText.getString(2);

                              if(sliderCounter == 0)
                              {
                                  if("Link".equalsIgnoreCase(sliderType))
                                  {
                                  %>
                                <div class="item" onclick="openWindow(this)" onKeyPress="openWindow(this)"
                                    data-href="<%=sliderUrl%>" data-interaction="true" tabindex="0"
                                    aria-label="<%=actualAltText%>">
                                    <div class="carousel-image"
                                        style="background-image: url('<%=imagepath%>')">
                                        <div class="carousel-caption">
                                            <h3><%=headerAltText%></h3>
                                            <p><%=actualAltText%></p>
                                        </div>
                                    </div>
                                </div>
                                <div class="item" onclick="openWindow(this)" onKeyPress="openWindow(this)"
                                data-href="<%=sliderUrl%>" data-interaction="true" tabindex="0"
                                aria-label="<%=actualAltText%>">
                                <div class="carousel-image"
                                    style="background-image: url('<%=imagepath%>')">
                                    <div class="carousel-caption">
                                        <h3><%=headerAltText%></h3>
                                        <p><%=actualAltText%></p>
                                    </div>
                                </div>
                        <%
                                  }
                              }

                              sliderCounter++;
                            }
                            %>
                        <!-- Controls -->
                        <a class="left carousel-control" href="#carousel-main"
                            role="button" data-slide="prev"> <span
                            class="fa-chevron-left" aria-hidden="true"></span> <span
                            class="sr-only">Previous</span>
                        </a> <a class="right carousel-control" href="#carousel-main"
                            role="button" data-slide="next"> <span
                            class="fa-chevron-right" aria-hidden="true"></span> <span
                            class="sr-only">Next</span>
                        </a>
                    </div>
                </div>
                <!-- END: Slider container -->
            </div>
        </div>
        <%
                }
                %>
        <!-- END: slider -->

【问题讨论】:

    标签: javascript jquery twitter-bootstrap-3 bootstrap-4


    【解决方案1】:

    如果您已从 BS3 更新到 BS4,那么您需要将代码中的幻灯片类从 item 更改为 carousel-item,因为在 BS4 中他们做了一些更改。 因此,您可以简单地对所有幻灯片 div 执行此操作

    <div class="carousel-item" onclick="openWindow(this)" onKeyPress="openWindow(this)" data-href="<%=sliderUrl%>" data-interaction="true" tabindex="0" aria-label="<%=actualAltText%>">

    并确保将active 类也添加到轮播代码的第一张幻灯片中。

    希望对你有帮助

    【讨论】:

    • 非常感谢您花时间回答这个问题。是的,我已经尝试过了。你能告诉我我应该如何调试这个。就像我说的主要问题是我在 Chrome 开发工具中看不到任何错误
    • 由于大多数与 BS4 升级相关的更改与样式相关而不是 js 相关,因此您很少会在控制台中看到任何错误,BS4 是 BS3 项目的主要升级,因此您必须重写BS4 中更改的代码中的类。有很好的官方文档可以帮助你迁移,请访问以下链接学习它getbootstrap.com/docs/4.0/migration
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-27
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    • 2018-03-29
    • 1970-01-01
    • 2021-05-14
    相关资源
    最近更新 更多