JavaScript - Function global Variable

René Paschold

Erfahrenes Mitglied
Das ist meine Function:


var chrLengh;

function CheckLen(Target) {

StrLen = Target.value.length;

if (StrLen == 1 && Target.value.substring(0,1) == ' ') {
Target.value = '';
StrLen = 0;
}
if (StrLen > <% = restZeichen %>) {
Target.value = Target.value.substring(0, <% =
restZeichen %>)
CharsLeft = 0;
}
else {
CharsLeft = <% = restZeichen %> - StrLen;
}

document.smsForm.smsZeichen.value = CharsLeft;
chrLengh = CharsLeft;
}
//-->
</script>


Jetzt möchte ich fast ganz unten im Document das chrLengh ausgegeben wird. Aber da steht immer undefined. Normalerweise sollte da eine Zahl stehen die sich mit ändern des Textfeldes aktualisiert. Ich habe das moment in einen Textfeld da geht das. Ich hätte das aber gerne so das da nur Text steht...


Und mein Aufruf sieht jetzt so aus:

<script language="JavaScript1.1">
<!--
document.write(chrLengh)
//-->
</script>

Aber da steht dann immer undefined :((

Was mache ich denn falsch?

Hier mal die beiden Textfelder:

<input type="text" style="font-size: 9px;" name="smsText" size="100" maxlength="<% = restZeichen %>" onFocus="CheckLen(this)" onChange="CheckLen(this)" onKeyDown="CheckLen(this)" onKeyUp="CheckLen(this)">

Und die bisherige Ausgabe:
<input type="text" name="smsZeichen" value="<% = restZeichen %>" size="3" maxlength="3" readonly

Da sind ASP Tags mit drin, also nicht stören lassen :p

Gruß
Fati
 
Hoi :)

Also ich hab die ASP-Tags rausgenommen und mal mit normalen Variablen im JavaScript ersetzt und bin dabei zu dem hier gekommen:

http://home.arcor.de/fluffer/sms/test.html

Sprich - die Ausgabe funktioniert soweit eigentlich.

Ist dir damit geholfen oder hab ich was verwexelt? :)

Noch als Anmerkung:
1)
Ich hab den Tail des JavaScriptes rausgenommen, wo du gecheckt hast, ob die Zeichenzahl überschritten wurde und ggf. Buchstaben subtrahiert hast - sollte ja eigentlich durch das maxlength-Attribut des Input-Felds eingestellt sein.
2)
Du müsstest noch einbauen, dass auch bei Mausklick rechts/links die Funktion aufgerufen wird, denn du kannst ja nicht nur Text per Tastatur eingeben oder copy'n'pasten, sondern auch per Maus, und das wird noch nicht festgehalten!

hth,
Geist
 
hier mal ein Auszug aus dem hier

...Wenn Sie innerhalb von Funktionen Variablen ohne das Schlüsselwort var deklarieren, dann sind diese Variablen global.

lass also mal das "var chrLengh" am Anfang weg. ;)

allerdings glaube ich nicht, daß es daran liegt. Ich vermute mal: die Funktion CheckLen wird ja nur ausgeführt, wenn man etwas mit dem Input-Feld macht (onFocus, usw.) also ist beim Aufruf der Seite natürlich chrLengh noch undefined.

eine Möglichkeit: chrLengh am Anfang einfach mal auf 0 definieren ;)


hope that helpz

Dunsti
 
OK Danke. Ich werde mal gucken ob ich das so verwenden kann. Eigentlich sollte halt das Ergebnis sein, das die Zahl anstatt in einer Textbox als reiner Text angezeigt wird.

Aber trotzdem vielen Dank...
 
Sieht genauso aus wie das erste :D

Anstelle der Box die du da hast soll einfacher Text stehen. Die Zahl soll dann bei der Eingabe auch runter gezählt werden so wie jetzt nur nicht in der Textbox!
 

Neue Beiträge

Zurück