Ich hatte gerade nichts zu tuhen, also dachte ich mir ich versuch mich nochmal in js... also versuche ich jetzt in eine variable diese variable plus 1 zu speichern. scheint aber nicht zu gehen... die textarea sagt mir nur NaN wo ich schon vermutungen hatte das das "Not aNumber" bedeutet... hoffe ihr könnt mir helfen
<head>
<script type="text/javascript">
function rechnepluseins()
{
var zahl=zahl + 1;
document.getElementsByTagName('textarea')[0].value = zahl;
}
function start()
{
var zahl=1;
document.getElementsByTagName('textarea')[0].value = zahl;
}
</script>
<body onload="start()">
<textarea></textarea><br>
<input type="button" value="Rechne +1" onclick="rechnepluseins()">
</body>
geschrieben von Micha am 14.06.2006 - 07:07
Hallo,
Dein Code ist fast richtig! Du musst Dir eins klar machen. In JS (und auch in anderen Sprachen) gibt es lokale und globlae Variablen. Dieser Unterschied ist es, der Dir "zu schaffen macht"
Bsp:
HTML-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
function foo(){
window.alert(typeof(variable)); //UNDEFINED
}
function bar(){
var variable = 25; //Lokale Variable
foo();
}
window.onload = bar;
aber:
HTML-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
var variable; //Globale Variable
function foo(){
window.alert(typeof(variable)); //NUMBER
}
function bar(){
variable = 25;
foo();
}
window.onload = bar;
Im ersten Bsp erzeugen wir eine Variable mit dem Namen "variable" in der Methode selbst, es ist eine lokale Variable. Sie steht nur in der Funktion bar() zur Verfügung. Möchte ich nun in foo() auf diese zugreifen, geht das nicht.
Im zweiten Beispiel wird die Variabel außerhalb deklariert! Innerhalb von bar() wird ihr dann noch ein Wert zugewiesen. Da es sich um eine globale Variable handelt, ist auch die Wertzuweisung "global" verfügbar. Somit kann auch in foo() eine Weiterverarbeitung passieren.
Auf Dein Beispiel übertragen heißt das, die Variable "zahl" existiert nicht in rechnepluseins(), da sie lokal in start() deklariert ist.
Nichts + 1 = Nichts
Das zweite Problem ist, das Du mit dem Schlüsselwort var eine Variable deklarierst. Sollte die schon vorhanden sein, löscht Du diese. Das tritt bei Dir nicht ein, da var zahl; immer in einer Funktion steht und somit jeweils lokal ist.
var variable = Math.PI;
function foo(){
var variable = "String"
window.alert(variable);
}
function bar(){
var variable = 25;
window.alert(variable);
}
window.onload = function() {
bar(); //25
foo(); //String
bar(); //25
alert(variable); //3.14...
};
Es ist ratsam, am Anfang und der Übersichthalber immer nur einmal einen Variablennamen zu nutzen. Deklariere "zahl" global und nur einmal(!) und Dein Programm wird perfekt laufen!
Liebe Grüße,
Micha
geschrieben von mr-smile am 14.06.2006 - 22:34
danke, jetzt gehts
aber es gibt bestimmt noch irgendwelche feinheiten oder?