2017-10-28 16 views
0

zu wechseln Ich weiß, dass es ähnliche Fragen gibt, aber es gab keine, die mir noch helfen könnten. Ich möchte die CSS "Transform" -Eigenschaft für das .fa-caret-right Element umschalten. Wenn ich das erste Mal klicke, funktioniert die Funktion gut. Aber wenn ich versuche, es zum zweiten Mal auszulösen, muss ich immer zweimal klicken. Ich habe den JavaScript- und HTML-Code in verschiedenen Dateien getrennt und in der head der HTML-Datei verknüpft.Muss zweimal klicken, um zwischen .click() Event

bearbeitet: habe ich #counter und fand heraus, dass count++;immer arbeiten, wenn fa-caret-right geklickt wird aber transform nur jede andere Zeit arbeiten.

Vielleicht sieht jemand einen Fehler, den ich gemacht habe, danke! Ich habe bereits versucht mehrere Click-Ereignisse Ich weiß, aber das ist mein Code im Moment:

HTML (es gibt insgesamt 13 #p Elemente)

<section class="viewport"> 
    <div class="content"> 
     <div class="controls"> 
     <i class="fa fa-caret-right" aria-hidden="true"></i> 
     </div> 
     <p id="counter">1 of 13</p> 
     <div class="gallery large"> 
     <img src="files/img/ogimage.jpg" id="p1"> 
     <img src="files/img/ogimage2.jpg" id="p2"> 
     <img src="files/img/ogimage3.jpg" id="p3"> 
     <img src="files/img/ogimage4.jpg" id="p4"> 
     </div> 
    </div> 
    </section> 

JavaScript

//JavaScript Document 
$('document').ready(function() { 

    var count = 1; 
    var total = 13; 

    $('.fa-caret-right').on('click' ,function scrollHorizontal() { 
     count++; 

     var number = count + " of 13"; 
     var scrollTo = $("#p"+count); 
     var where = $(scrollTo).offset().left - 150; 

     $('#counter').html(number); 

     $(".gallery").stop().css("transform","translateX(-"+where+"px)"); 
    } 
); 

}); 
+0

Können Sie ein JFiddle oder Codepen für dieses Problem erstellen? –

+1

Sie verwenden '' 'count''' für das Tracking. Wenn du einmal klickst, '' 'count = 2''' was" '' p2'' bedeutet, aber wenn du es erneut anklickst, wird es 3 und '' 'p3''' ist nicht da. Auch wenn es für den dritten Klick funktioniert, könnte der Grund darin liegen, dass die Seite neu geladen wird oder die "$" ("Dokument") -Funktion ausgelöst wird, was wiederum '' count = 1''' macht. – chowmean

+0

Eigentlich gibt es 13 '# p' Elemente - ich habe den Code in diesem Beispiel gekürzt. Wenn Sie Recht haben, dass die Seite neu geladen wird, ist sie für mich nicht sichtbar. Ich habe auch versucht, den Code ohne '$ (" Dokument ") zu schreiben. Fertig, aber dann funktioniert nichts. Aber ich habe einen Zähler in das Dokument eingefügt und festgestellt, dass "count" immer erhöht ist, während die CSS-Aktion nicht funktioniert. Also funktioniert die Funktion teilweise. –

Antwort

0

verschieben var count = 1 outside (oben) $ ('document'). ready()

+0

Schöne Idee, aber leider hat das Problem nicht gelöst. Ich habe gerade einen Zähler in das Dokument eingefügt und festgestellt, dass 'count' immer erhöht ist, während die CSS-Aktion nicht funktioniert. Die Funktion funktioniert also teilweise ... Haben Sie noch eine Idee für eine Lösung? –