2016-06-15 21 views
0

Es gab andere Fragen ähnlich, aber die Antworten beziehen sich immer auf bestimmten JQuery-Code, den ich nicht verwende. Stattdessen verwende ich die W3Schools Diashow Beispiel hier:Link zu einer bestimmten Folie im Karussell mit Javascript/CSS/HTML

http://www.w3schools.com/howto/howto_js_slideshow.asp

Ich habe Links auf einer anderen Seite, und ich würde jede dieser Verbindungen wie die Diashow Seite auf einer bestimmten Folie zu öffnen.

Die letzte Sache, habe ich versucht, ist dies:

LINK auf separaten Seite:

<a href="slideshow.html#currentSlide(3)"> 

Dot Links unter der Diashow auf slideshow.html (an nichts denken konnte nicht anders zu verknüpfen) :

<div style="text-align:center"> 
    <span class="dot" onclick="currentSlide(1)"></span> 
    <span class="dot" onclick="currentSlide(2)"></span> 
    <span class="dot" onclick="currentSlide(3)"></span> 
    <span class="dot" onclick="currentSlide(4)"></span> 
    <span class="dot" onclick="currentSlide(5)"></span> 
    <span class="dot" onclick="currentSlide(6)"></span> 
</div> 

und Javascript, die angeblich die Diashow erzählt, was auf der Hash-Basis zu laden:

Wahrscheinlich eine dumme Idee, aber ich bin relativ neu in diesem Zeug und bin aus Ideen.

Antwort

0

Sie haben es fast schon, aber Sie haben ein Problem. Ihr Skript, das behandelt, welches Element angezeigt werden soll, verweist auf ein Element, das nicht vorhanden ist. Sie schrieb:

$('#' + location.hash.substring(1)).click(); 

die zu so etwas wie dies bewerten wird:

$('#currentSlide(1)').click(); 

Das jQuery ein Element mit id=currentSlide(1) Ziel erzählt, die nicht auf Ihrer Seite nicht vorhanden ist.

Was würde ich empfehlen, stattdessen ist Ihre URL-Fragmente zu nennen nur mit dem Index des Bildes Sie, wie diese zeigen wollen:

<a href="slideshow.html#0">Image 1</a> 
<a href="slideshow.html#1">Image 2</a> 
<a href="slideshow.html#2">Image 3</a> 

Dann in der slideshow.html Seite Verwenden Sie diesen Befehl zum Auslösen des Click-Ereignis :

$(document).ready(function() { 
    if (location.hash) { 
    var hash = location.hash.slice(1); 
    $(".dot").eq(hash).click(); 
    } 
}); 

die at the index provided, für die dot Klasse aussehen wird und dieses Element klicken.

+0

Als ich das tat, es alle Folien zusammen auf der Seite in einer vertikalen Formation nur angezeigt, eine auf der anderen den ganzen Weg hinunter die Seite. Es ist möglich, dass ich etwas falsch gemacht habe! –

+0

Ich denke, dass Sie Ihren Code nicht in das Dokument geladene Ereignis wickeln. document.addEventListener ('DOMContentLoaded', function() { // Ihre js hier }, falsch); – Bellu

+0

Ich habe nichts getan, um die Anzeige zu ändern. Ich habe lediglich JavaScript geändert. Können Sie das genaue Problem klären, das Sie jetzt haben? Erhalten Sie irgendwelche Konsolenfehler? – dave

0

Man könnte so etwas tun:

if(location.hash){ 
    //assuming you have a hash like this -> slide1 
    var slide = location.hash; 
    var slideNumber = slide.replace("#slide",""); 
    currentSlide(slide); 
} 
+0

Ich habe das versucht, aber es bringt mich auf die Diashow-Seite ohne Folien. Es sind nur die Punkte ohne Bild über ihnen. –