Javascript: Eingabetext in Zeilen berechnen
Matt
- javascript
0 Gunnar Bittersmann
2 Ganane0 Matt
Hi,
ich hab ein Problem beim Berechnen von Zeilen.
Ich habe eine textarea in welche der Benutzer Text tippen kann. ;)
Mit Javascript berechne ich nun wieviele Zeilen der Benutzer mit seinem Text belegt. Hierbei gilt, 1 Zeile = 35 Zeichen. Also ist z.B. 36 Zeichen = 2 Zeilen, aber 70 Zeichen auch = 2 Zeilen. 71 Zeichen wären dann schon 3 Zeilen.
Mein Ansatz ist wie folgt:
count_row = length/35;
if (count_row <= 1) {
counter = 1;
}
else if (count_row > 1) {
count_row++;
var countit = ""+count_row;
var newcounter = countit.split(".");
var counter = newcounter[0];
}
alert(counter);
Jedoch stimmt das nicht ganz... denn bei 70 Zeichen sind es keine 2 (wie es sein sollte) sondern 3.
Kann mir jemand auf die Sprünge helfen?
Danke vorab.
@@Matt:
Mein Ansatz ist wie folgt:
count_row = length/35;
Globale Variablen sind in den allerseltensten Fällen ein guter Ansatz. Verwende '[link:http://de.selfhtml.org/javascript/sprache/variablen.htm@title=var]
'!
In dem Rest kann ich keinen Sinn erkennen. Mich dünkt, du suchst '[link:http://de.selfhtml.org/javascript/objekte/math.htm#floor@title=Math.floor]
'
Live long and prosper,
Gunnar
Zuerstmal: wie wäre es mit Kommentaren? Warum benutzt du so unsemantische nichtssagende Variablen? =/ Das solltest du ändern.
Mein Ansatz ist wie folgt:
[code lang=javascript]
count_row = length/35;
"length"? Was ist das und woher kommt es? Aber gut, angenommen length hat den Wert 70, dann ist count_row = 2.0.
if (count_row <= 1) {
counter = 1;
}
Wird übersprungen, weil count_row > 1.
else if (count_row > 1) {
count_row++;
count_row wird um 1 erhöht, hat also nun den Wert 2.0 + 1 also 3.0.
var countit = ""+count_row;
countit (countit? Meinst du vielleicht countIt?) ist nun ein String "3.0".
var newcounter = countit.split(".");
newcounter (s.o.) ist nun ein Array und enthält "3" und "0" als Strings.
var counter = newcounter[0];
counter bekommt den Wert aus dem ersten Eintrag des Arrays newcounter, der den String "3" enthält. Genau so, wie du es geschrieben hast.
Kann mir jemand auf die Sprünge helfen?
Zuerstmal solltest du diese ganzen Zeichenkettenoperationen weglassen. Z.B. das countit.split(). Du möchtest stattdessen die Methode ceil der Klasse Math benutzen. Außerdem möchtest du beide Bedingungen weglassen.
Anstatt deiner ganzen Zeilen, kann und sollte man einfach schreiben:
alert(Math.ceil(length/35));
und gut ist.
Math.ceil(length/35));
Genau das habe ich gesucht!
Herzlichen Dank!