JavaScript/jQuery! Wie einen Loop einbinden?


15.12.2022, 12:31

Ich habe zwischenzeitlich auch gemerkt, dass javascript und jquery wohl nicht synonym zu verwenden sind. #hoppla. An meiner Ausgangsfrage ändert das aber zunächst nichts ;)

1 Antwort

Die setTimeout-Funktion würde ausreichen, um die Animation nach Beendigung zu wiederholen. Der Aufruf von animate sollte zuvor in eine Funktion verschoben werden.

function startCountAnimation() {
  $({ countNum: $('.code2').html() }).animate({
    countNum: 5360
  }, {
    duration: 10000,
    easing: 'linear',
    step: function() {
      $('.code2').html(Math.floor(this.countNum));
    },
    complete: function() {
      $('.code2').html(this.countNum + "+");
      setTimeout(startCountAnimation, 5000);
    }
  });
}

startCountAnimation();

Die Verzögerungszeit bis zur Ausführung wird in ms angegeben. Im obigen Fall wären es 5000ms, also fünf Sekunden.

Stört das complete eigentlich die Wiederholung oder zeigt das nur an, was passiert, wenn es fertig hochgezählt hat?

Der complete-Callback wird ausgeführt, sobald die Animation beendet wurde. Für eine Wiederholung stört er nicht. Stattdessen ist er der Implementation einer Wiederholung eher dienlich, da bei seiner Ausführung klar ist, dass das Programm bereit für einen Neustart ist.

Aber auch über Links z.B. mit einer leicht verständlichen Übersicht der Anatomie eines Jquery Codes, (...)

JavaScript kannst du auf diesen Seiten lernen:

Die jQuery-Bibliothek ist hier dokumentiert.

Ich würde ganz gerne zu der Zahl noch eine einfache sich drehende Grafik (Kreis, Pfeil oä) hinzufügen. Hat da jemand zufällig nen leicht verständlichen Link oä dazu?

Dafür würde ich wohl eine CSS-Animation einsetzen.

HTML:

<span class="rotating-arrow"></span>

CSS:

@keyframes rotating {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}

.rotating-arrow {
  animation: rotating 2s linear infinite;
  display: block;
  height: 15px;
  line-height: 15px;
  text-align: center;
  width: 15px;
}

.rotating-arrow::before {
  content: '\25b2'; /* some arrow */
}

Genaueres zu CSS-Animation findest du unter anderem auf diesen Seiten:

ClaudiHundemom 
Fragesteller
 15.12.2022, 22:48

Vielen Dank! Ich habe 5 verschiedene Zahlen, die hochgezählt werden sollen. im html code, code 2, code 3, code 4 & code 5. Kopiere ich dann diese Abschnitte (von Dir) in der js Datei und füge sie untereinander ein? Bei meinem 1Versuch hat er dann gar nicht mehr gezählt. Es gibt aber im js noch code vor dem code 2:

    $({ countNum: $('.code').html() }).animate({ countNum: 1295365}, {

      duration: 4000,

      easing: 'linear',

      step: function () {

      $('.code').html(Math.floor(this.countNum));

  },

 

  complete: function () {

      $('.code').html(this.countNum);

      //alert('finished');

  },

kommt das dann weg, wenn ich Deinen nehme?

0
ClaudiHundemom 
Fragesteller
 15.12.2022, 23:03
@ClaudiHundemom

Edit: Also wenn ich den Code von Dir kopiere und 'code..' anpasse, dann zählt immer nur die erste Funktion hoch, die ich eingefügt habe. Die anderen bleiben auf Null.

0