我有幻灯片,需要点击才能转到下一张图片/视频。 但是,我想自动进行此操作,因此不需要任何用户活动。
该页面如下所示:
<article class="active">
<li class="active"> Slide 1 </li>
<li> Slide 2 </li>
<li> Slide 3 </li>
<li> Slide 3 </li>
</article>
<article>
<li> Slide 1 </li>
<li> Slide 2 </li>
<li> Slide 3 </li>
<li> Slide 3 </li>
</article>
<article>
<li> Slide 1 </li>
<li> Slide 2 </li>
<li> Slide 3 </li>
<li> Slide 3 </li>
</article>
当文章处于活动状态时,您将获得其中的li的“演示文稿”。每当您单击下一个按钮时,下一个li将变为活动状态。当它处于活动状态时,你只能看到它。
我想拥有什么:
使第一篇文章处于活动状态(如代码中所示)。 然后我想要例如自动使幻灯片1激活。 10秒后我想要幻灯片2激活。 30秒后我想要幻灯片3激活。
到达终点时(本例中为幻灯片3)。我想让它转到下一篇文章,并在x大量时间之后使这些幻灯片处于活动状态。
我一直在寻找这个问题很久了。但是我只能在x大小的秒后才能使Li元素处于活动状态。但我想决定我可以让每个Li元素活跃多久。这是因为有些幻灯片正在播放电影。有些只是图像。
答案 0 :(得分:1)
使用纯JavaScript实现粗体操作,使其完全正常工作:
<script>
var interval = setInterval(function(){
console.log(1);
var active = document.getElementsByClassName("active");
var parent = active[0].parentNode.parentNode.childNodes;
var foundClass = false;
var nextSlide = false;
for(var j=0; j<parent.length; j++){
var childs = parent[j].childNodes;
for(var i=0; i<childs.length; i++){
if(childs[i].nodeType==1 && foundClass){
childs[i].className = "active";
nextSlide = true;
break;
}
if(childs[i].nodeType==1){
if(childs[i].getAttribute("class")=="active"){
childs[i].className = "";
foundClass = true;
}
}
}
if(nextSlide){
break;
}
}
if(!nextSlide){
clearInterval(interval);
}
}, 1000);
</script>
<style>
.active { font-weight: bold; }
</style>
<article id="initShow">
<li class="active"> Slide 1 </li>
<li> Slide 2 </li>
<li> Slide 3 </li>
<li> Slide 4 </li>
</article>
<article>
<li> Slide 5 </li>
<li> Slide 6 </li>
<li> Slide 7 </li>
<li> Slide 8 </li>
</article>
<article>
<li> Slide 9 </li>
<li> Slide 10 </li>
<li> Slide 11 </li>
<li> Slide 12 </li>
</article>
答案 1 :(得分:0)
我为你写了一些东西
function autoSpin(){
var slideShow = $("#mySlideshowOutdiv"); //set this yourself
var slides = $(slideShow).find("li");
var activeSlide = $(slideShow).find("li.active")
var timer = 5000; //5 seconds
setTimeout(function({
nextSlide();
}, timer)
function nextSlide() {
if($(activeslide).nextAll().length == 0) { //If you're at the last "li"
setActive($(slides).eq(0))
} else { // Else just use the next slide in line
setActive($(activeSlide).next("li"));
}
}
function setActive(slide){
$(slideShow).find(".active").removeClass("active");
$(slide).addClass("active");
}
}