5 Stimmen

Javascript-Schleife mit Dezimalzahlen

Ich versuche, diese for-Schleife zu verwenden, um Divs anzuzeigen. Aber ich bekomme einen seltsamen Fehler von der jQuery-Bibliothek.

Fehler: Syntaxfehler, nicht erkannter Ausdruck: =10]

Ich habe von den Problemen mit Dezimalzahlen in JavaScript gelesen, aber ich verstehe immer noch nicht, warum das nicht funktioniert:

for (var i = 10.00; i >= ui.value; i -= 0.25) {
    $("data_id=" + Math.floor(i) + "]").show();
}

Wenn ich die Divs verstecke, verwende ich dies und es funktioniert gut:

for (var i = 0.00; i < ui.value; i += 0.25) {
    $("[data_id=" + Math.floor(i) + "]").hide();
}

7voto

Gregor Punkte 4176

Sie haben das [ in der ersten Schleife vergessen, das wird funktionieren:

for (var i = 10.00; i >= ui.value; i -= 0.25) {
    $("[data_id=" + Math.floor(i) + "]").show();
}

Sie sollten diese Schleife in eine Ganzzahlschleife umwandeln, wenn Sie die Zahlen ohnehin .floor()en.

2voto

nbrooks Punkte 17799

Sie vermissen Ihre öffnende eckige Klammer für den Attribut-Gleichheits-Selektor:

for (var i = 10.00; i >= ui.value; i -= 0.25) {
    $("[data_id=" + Math.floor(i) + "]").show();
}

Wie bereits erwähnt wurde, gibt es jedoch absolut keinen Grund, Floats dafür zu verwenden, da der Aufruf von .floor() im Grunde bedeutet, dass Sie .show() auf jeden der divs 4 Mal unnötigerweise aufrufen:

for (var i = 10; i >= ui.value; i--) {
    $("[data_id=" + i + "]").show();
}

Dies sollte genau das erreichen, was Sie wollen, mit etwa einem Viertel der Arbeit.

1voto

Christofer Eliasson Punkte 31933

Sie vermissen ein [ in Ihrem Selektor hier:

$("data_id=" + Math.floor(i) + "]").show();

Das sollte sein:

$("[data_id=" + Math.floor(i) + "]").show();

Sie sollten wahrscheinlich auch ' um den Wert von data_id hinzufügen, so dass das Endergebnis sein sollte:

$("[data_id='" + Math.floor(i) + "']").show();

1voto

Can Poyrazoğlu Punkte 31033

Sie sollten sich niemals, wirklich niemals auf die Gleitkomma-Arithmetik für Iterations-/Indexvariablen verlassen. Sie können Sie in seltsame Situationen bringen, und noch schlimmer ist, dass verschiedene Prozessoren Gleitpunkte unterschiedlich behandeln. Ihr Beispiel scheint keine Nebenwirkungen von Gleitpunkten zu haben, aber die Verwendung von Gleitpunkten ist wirklich eine schlechte Praxis.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X