Ich muss eine Diashow machen, die sowohl automatisch als auch manuell arbeiten muss.Automatische und manuelle Diashow
Für den manuellen Teil habe ich zwei Tasten: nächste und vorherige, die mir erlaubt, die Fotos zu sehen, ohne eine bestimmte Zeit zwischen den Bildern zu warten.
Wenn ich nicht auf die Tasten klicke, wird die Diashow automatisch und die Bilder ändern sich nach sechs Sekunden (zum Beispiel).
Mein Problem ist, dass, nachdem ich auf den vorherigen/nächsten Knopf geklickt habe, die Bilder schneller erscheinen oder mehr als eine auf dem Bildschirm erscheinen. Hier
ist der Code, mit denen ich arbeite:
var slideIndex = 1;
showSlides(slideIndex);
function plusSlides(n) {
showSlides(slideIndex += n);
}
function showSlides(n) {
var i;
var slides = document.getElementsByClassName("hidden");
if (n===undefined){n= ++slideIndex;}
if (n > slides.length) {slideIndex = 1;}
if (n < 1) {slideIndex = slides.length}
$(slides[slideIndex-1]).fadeIn(2000);
slides[slideIndex-1].style.display = "block";
$(slides[slideIndex-1]).delay(3000);
$(slides[slideIndex-1]).fadeOut(1000);
setTimeout(showSlides, 6000);
}
.hidden {
display: none;
}
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<meta charset="utf-8">
<title>jQuery</title>
<link rel="stylesheet" href="lab5.css" media="screen" title="no title">
</head>
<body>
<h1 class="titlu">Goodies</h1>
<div align="center">
<button class="button" onclick="plusSlides(-1)" >Previous</button>
<button class="button" onclick="plusSlides(1)" >Next</button>
</div>
<div class="hidden">
<h4 class="num" > 1/5 </h4>
<img src="http://placehold.it/150x150?text=1">
</div>
<div class="hidden">
<h4 class="num"> 2/5 </h4>
<img src="http://placehold.it/150x150?text=2">
</div>
<div class="hidden">
<h4 class="num"> 3/5 </h4>
<img src="http://placehold.it/150x150?text=3">
</div>
<div class="hidden">
<h4 class="num"> 4/5 </h4>
<img src="http://placehold.it/150x150?text=4">
</div>
<div class="hidden">
<h4 class="num"> 5/5 </h4>
<img src="http://placehold.it/150x150?text=5">
</div>
</body>
</html>
Gibt es eine Weise, die ich die Diashow Rückkehr in seine „Geschwindigkeit“ machen kann zeigen die Bilder alle sechs Sekunden, nachdem ich klick auf vorheriges/nächstes?
Wie kann ich verhindern, dass mehr als ein Bild gleichzeitig angezeigt wird?
Nur eine kleine Anmerkung: Sie können 'verwenden, wenn {...}' statt 'if (n undefiniert ===) {...}' (n!). Es ist kürzer und lesbarer. –
@CommercialSuicide, würde ich nicht empfehlen - vor allem bei der Arbeit mit Zahlen oder irgendeine Art von Typ, der einen Wert haben könnte, der falsch ist (z. B. 0, ''), wie '! 0 === wahr'. – JanS
@JanS, sicher, wenn jemand 'if (! N) {...}' Konstruktion verwenden will, muss er über ** Zwang ** und das Verhalten von Primitiven wissen –