【发布时间】:2020-08-31 12:13:20
【问题描述】:
我不知道自己在做什么。
我正在使用(最新版本(5.x))swiper.js。我在一个页面上有多个滑动器,它们都共享完全相同的选项。当然,我可以初始化多个滑块,尽管我发现这是不必要的,因为一个初始化适用于所有滑块。对于咯咯的笑声,我现在尝试使用推荐的方法来实现它们,但无论如何它都没有用:
每个 swiper 幻灯片都有一个 data-title 属性,我想将其用作 swiper.js 选项中生成的 span 元素的数据。这些生成的 span 元素进入另一个 div(参见代码)。
然而,出于某种原因,在 renderbullet 选项中,创建的跨度文本会重用第一个 swiper 的属性并将标题数组应用于所有其他 swiper。我的理解是数组在第一个 swiper 中开始和停止,并将该存储的数组用作其余部分的数据。我不希望这样。
我尝试了多种方法来使 data-title 属性文本正确但没有成功。
我得到的最接近的是 map();这告诉我有 21 个数组是正确的。然而,当我尝试使用这些数据时,每个跨度都有 21 个标题。对此提供一些帮助将不胜感激。
请看我下面的代码:
<div class="swiper-container">
<div class="swiper-wrapper">
<div class="swiper-slide" data-title="The Title_A0">
<!--content-->
</div>
<div class="swiper-slide" data-title="The Title_A1">
<!--content-->
</div>
</div>
<div class="swiper-button-prev"></div>
<div class="swiper-button-next"></div>
<div class="swiper-pagination">
<!-- GENERATED SPAN GOES HERE -->
<span class="className">The Title_A0</span>
<span class="className">The Title_A1</span>
<!-- GENERATED SPAN GOES HERE -->
</div>
</div>
<div class="swiper-container">
<div class="swiper-wrapper">
<div class="swiper-slide" data-title="The Title_B0">
<!--content-->
</div>
<div class="swiper-slide" data-title="The Title_B1">
<!--content-->
</div>
</div>
<div class="swiper-button-prev"></div>
<div class="swiper-button-next"></div>
<div class="swiper-pagination">
<!-- GENERATED SPAN GOES HERE -->
<span class="className">The Title_A0</span> <!-- I want <span class="className">The Title_B0</span>-->
<span class="className">The Title_A1</span> <!-- I want <span class="className">The Title_B1</span>-->
<!-- GENERATED SPAN GOES HERE -->
</div>
</div>
var swiper = new Swiper('.swiper-container', {
pagination: {
renderBullet: function (className, title) {
var title = document.querySelectorAll('.swiper-slide').getAttribute('data-title');
return '<span class="' + className + '">' + title + '</span>';
},
}
});
【问题讨论】:
-
在你运行
function (className, title)的函数中,你创建了一个名为title的变量。你有这两个头衔有什么原因吗? -
没有它我得到
Uncaught TypeError: document.querySelectorAll(...).getAttribute is not a function at t.renderBullet -
var title = document.....产生一个数组,因此 Uncaught TypeError。重命名为titleList并用作titleList[0]。要引用data-*属性,请使用titleList[0].dataset.title(实际上没有data-)。数组为空时也会出错。
标签: javascript html jquery css swiper