寻找一种方法来跟踪 JavaScript 中的点击。我在单独的 div 包装器中有一系列 javascript 控制的边。我需要一个计数器来记录上一张被点击的幻灯片编号。这将用于在新 div 加载时淡出以前的 div。HTML 页面不会重新加载,所以我认为我不能使用浏览器历史记录功能作为选项。我真的只需要知道上一张幻灯片编号,因为幻灯片编号可以按顺序点击。
3 回答
最好的选择是使用History.js,但这有点矫枉过正。好处是它是语义的,并且会在浏览器重新加载时保持状态。后退按钮也转到上一个选项卡。
其他解决方案取决于您的设置和可用的库(jQuery 等)。如果您使用标准插件来做某事,它们通常会在状态更改时进行回调。检查 API。
基本算法是对每个按钮应用一个点击处理程序。您可以存储包含当前状态的全局变量。.slideButtons
为绝对按钮(page1、page2、page3 等)提供一个类,并有选择地为下一个和上一个按钮提供一个 id#nextSlide
和一个 id。#prevSlide
在处理程序中,检查类和 id。如果是nextSlide,或者prevSlide,加一,或者减一,然后更新。如果它是绝对类之一,则在父节点中搜索并计算匹配的类,直到找到您要查找的类。当你到达你按下的按钮时你的计数器的数字是新的状态。设置它,然后更新滑块。
您可以创建一个变量并在每次单击新幻灯片时对其进行更新,但我认为将所有幻灯片淡出然后淡入单击的幻灯片会更容易。
这样您就不需要知道当前显示的是哪张幻灯片。
莱昂
如果您希望用户永远不会重新加载页面,那么是什么让您无法简单地使用常规 JavaScript 变量?
var currentSlideIndex = 0;
function nextSlide() {
currentSlide = currentSlide + 1;
if (currentSlide >= slideCount) {
currentSlide = 0;
}
}
您会发现许多类似的 HTML5-slide 包,在浏览器的文档片段标识符中跟踪当前幻灯片。当您这样做时,幻灯片可以在 F5 中保留,并且用户可以通过复制/粘贴地址来发送指向当前幻灯片的链接。