if kleiner vergleich geht nicht

basti1012

Erfahrenes Mitglied
Mir ist das schon öfters vorgekommen das es nicht läuft wie hier.
https://codepen.io/basti1012/pen/mdJzQrX?editors=1000Bei den Zahlen die vorgegeben sind sieht man das beim klick nix passiert.
Ändert man die 10000 in 9999 dann läuft es wieder.

Das kommt in den Beispiel jetzt nur vor wenn man 3 mit 4 stelligen Zahlen vergleicht , oder 4 mit 5 stelligen. ( wenn ich jetzt richtig getestet habe ).
Aufjedenfall geht es mit den vorgegebenen Zahlen nicht.

Aber warum erkennt das Script nicht das 6250 kleiner als 10000 ist ?
Sollte type="number" nicht gerade dafür sein das es nur Zahlen sein können ?
 
Zuletzt bearbeitet:
Sollte type="number" nicht gerade dafür sein das es nur Zahlen sein können ?
Nicht ganz, type="number" sorgt nur dafür, dass man nur "123" eingeben kann, aber nicht "abc". Der Datentyp ist jedoch, wie bei allen Eingabefeldern, String. Du musst ihn, z. B. mit parseInt, umwandeln, damit der Vergleich so funktioniert, wie man es erwartet.
 
ok ,danke,mit parseInt läuft es richtig.
Gibt es den dafür auch nee erklärung das es mit einigen Zahlen geht und mit anderen wieder nicht ?
Das ist mir noch nicht klar warum parseint nicht bei allen Zahlen gebraucht wird ?
 
Es funktioniert immer dann, wenn die Zahlen gleiche Anzahl von Stellen haben.
Beim Vergleich von Strings wird einfach von links begonnen. Vergleicht man z. B. "999" mit "1234" so ist die erste Ziffer 9 größer als 1, deshalb wird erkannt, dass "999" größer als "1234" ist. Könnte man zunächst sagen, dass das Blödsinn ist. Der Grund ist jedoch, dass ein Stringvergleich auch mit Buchstaben möglich sein muss und dann macht es Sinn, wenn man z. B. an die Sortierung von Namen in einem Adress- oder Telefonbuch denkt.
 
Genau, wenn man nur gleichlange Zahlen hat, dann geht die sehr einfach zu implementierende alphabetische noch gut. Ich vermute mal, dass deswegen Kameras auch Dateinamen wie IMG0001, IMG0002, ..., IMG0052 usw. generieren.

Wenn du hingegen ungleichlange Zahlen hast, etwa in einem Ordner Dateien mit Namen 1datei.docx, 2datei.docx, ..., 10datei.docx, dann wird 10datei.docx leider vor 1datei.docx einsortiert. Der Grund ist, dass von links nach rechts gelesen 1 <= 1, aber auch 0 <= d!

Das zu beheben, d.h. sich eine neue Sortierreihenfolge auszudenken, ist nicht mehr mit einem Einzeiler implementierbar: How should sorting work when numeric is mixed with alpha-numeric
 
Ok , ich danke euch.
Das beantwortet zumindest meine Fragezeichen im Kopf , warum das immer so ist.
Dachte immer das type="number" dafür da ist das es es nur Zahlen sein können.
Obwohl man in den Feld ein e ein tippen kann.
 

Neue Beiträge

Zurück