warum kann jquery die nummer nicht genau animieren?

7

Ich versuche, den folgenden Code zu verwenden, um die Nummer in einem Textfeld zu erhöhen

%Vor%

es arbeitet mit kleinen Zahlen wie von 0 bis 100 aber wenn es um große Anzahl wie in dem erwähnten Code geht, es gibt nicht die Zielnummer, es animiert zu Zahlen wie 1099933 oder 1099610 oder ..... und jedes Mal, wenn es sich ändert.

also wie kann ich es machen, um zu der Zahl zu animieren, die ich spezifiziere?

    
medo ampir 25.05.2012, 17:19
quelle

5 Antworten

15

Ich habe das gleiche Problem. Der Grund dafür ist, dass animate function eine mathematische Formel verwendet, die zeitbasiert ist. Sie bemerken das nicht wirklich, wenn Sie etwas basierend auf css animieren, weil es nahe genug in Pixeln ist. Es nähert sich dem Endwert, ist aber möglicherweise nicht immer genau der Endwert. Lösung: Verwenden Sie das Ereignis complete , um den letzten Wert festzulegen.

Hier ist was Sie tun müssen:

%Vor% %Vor%
    
Amir Raminfar 25.05.2012, 17:26
quelle
3

1) Javascript ist eine Single-Thread-Anwendung. Timeouts und Animationen schieben das Ereignis NUR auf der Grundlage einer idealen Stapelreihenfolge an das Ende des Stapels. Ein lang laufender Skriptabschnitt kann die tatsächliche Auslösezeit dieses Ereignisses weit über die Genauigkeit hinaus verursachen, die Sie suchen.

2) Die Animation approximiert, um wie viel erhöht werden soll, und bei größeren Zahlen ist die Auflösung sehr ungenau.

3) jQuery hat nur einen Animationspuffer. Es kann zu ernsthaften Renderproblemen kommen, wenn Sie mehr als einen "Counter" mit Animation aufrufen. Stellen Sie sicher, dass Sie die vorherige Animation stoppen, bevor Sie Änderungen daran vornehmen.

4) Auch bei einer Zeitüberschreitung von 0 können Sie eine Verzögerung von ~ 15 erwarten. Auch wenn das der einzige "Thread" ist, den Sie gerade ausführen.

Lösung:

%Vor%     
C.S. 25.05.2012 17:48
quelle
3

Animate ist nicht designed , um einen Zähler als Text zu erhöhen (obwohl es zufällig funktioniert, was sich bei jeder neuen Version von jQuery ändern könnte), es ist designed zu animieren eine oder mehrere CSS-Eigenschaften. Sie sollten stattdessen setInterval verwenden.

Ссылка

%Vor%     
jbabey 25.05.2012 17:28
quelle
2

Hier ist eine Lösung, die .animate() nicht verwendet.

DEMO: Ссылка

Es ist nur eine lineare Modifikation; Sie haben nicht die Lockerung Optionen, wenn Sie das wollten.

%Vor%     
user1106925 25.05.2012 18:07
quelle
0

Hier ist ein jQuery-Plugin, um Zahlen zuverlässig zu animieren, ut verwendet den vollständigen Rückruf, um die korrekte Endnummer zu setzen, sobald die Animation beendet ist:

Ссылка

    
Robert Kajic 09.01.2013 08:59
quelle

Tags und Links