2016-04-05 5 views
0

Ein Knopf wird als Kind an jede Folie von Javascript aus einem wichtigen, nicht zu verbergenden Grund angehängt. Was sie tut, es ist es scrollt zur nächsten Folie:Dieser fiese Knopf ist doppelter Sprung

<slide id="slide1" class="slide"> 
</slide> 
<slide id="slide2" class="slide"> 
</slide> 
<slide id="slide3" class="slide"> 
</slide> 
<slide id="slide4" class="slide"> 
</slide> 
<slide id="slide5" class="slide"> 
</slide> 
<slide id="slide6" class="slide"> 
</slide> 
<slide id="slide7" class="slide"> 
</slide> 

Und das ist das javascript:

<script type="text/javascript" language="javascript"> 
for(i=1;i<7;i++){ 
    var li = document.createElement("li"); 
    li.id=i; 
    li.className="dav"; 
    li.innerHTML="^"; 
    li.onclick=scrolls; 
    document.getElementById("slide"+i).appendChild(li); 
} 
function scrolls(){ 
    var a=++this.id; 
    document.getElementById("slide"+a).scrollIntoView(); 
} 
</script> 

Und das ist die Frage, die Tasten funktionieren gut zum ersten Mal, aber es in den nächsten klick es springt zwei Rutschen nach vorne, zB: nachdem du auf die erste Schaltfläche geklickt hast und hochscrollst und nochmal klickst, ist die Ansicht auf der dritten Folie und nicht mehr auf der zweiten. Was passiert ist jede Hilfe würde geschätzt werden und bitte erhalten Sie diese böse Fehler von mir! LETZTENS NICHT JQUERY VERWENDEN

Antwort

7

Sie haben ++this.id inkrementiert. Versuchen Sie this.id+1, weil ich ziemlich sicher bin, dass Sie nicht ändern möchten die id, nur bekommen Sie es und fügen Sie eins hinzu.

Es ist auch erwähnenswert, dass this.id nicht etwas ist, mit dem Sie leicht spielen sollten. Versuchen Sie etwas wie this.setAttribute("data-target",'slide'+(i+1)); bei der Einstellung, dann document.getElementById(this.getAttribute("data-target")).scrollIntoView(); - Magie! : D