Hi Bernd,
und mein schlaues (?) buch sagt, dass die zeilen
a-=10;
if (a>50)
bewirken sollen, dass a so lange in 10er-schritten runter
gezählt wird, wie es größer als 50 ist. das fand ich sehr
schön nachvollziebar…
Ja, da hat dein schlaues Buch wohl recht, aber dieses Verhalten macht es in deinem Fall halt bloß ein mal!
Folgendes:
Beim Aufruf einer Funktion wird der innere Körper in den geschweiften Klammern ausgeführt und dann wird ein sogenannter Rückgabewert geliefert.
Man nehme z.B. folgende Funktion:
function quadrat(zahl) {
return zahl*zahl;
}
Du übergibst der Funktion also einen Parameter, z.B. die Zahl 4, und erhälst das Quadrat daraus, also 16.
Dies geschieht aber nur einmal pro Aufruf.
Genauso in deiner Funktion:
function bewegen () {
a-=10;
if (a>50) {
window.document.laufschrift.left=a;
window.document.laufschrift.top=350;
}
}
Um wirklich das zu erreichen, was du willst, musst du noch eine Schleife einbauen. (Sollte dein Buch da anderer Meinung sein, so verbrenne es bitte, denn dann ist es Rotz)
So geht es:
function bewegen () {
window.document.laufschrift.top=350;
for (a=500; a>50; a-=10) {
window.document.laufschrift.left=a;
}
}
Diese Funktion bewegt deine Laufschrift von a=500 in 10er-Schritten, solange a>50 gilt. Also der letzte Schritt ist dann von 60 nach 50.
Dann stoppt sie und tut nix mehr.
Du könntest aber noch eine IF-Abfrage einbauen, die dir bei a=60 dein a auf 500 zurücksetzt, also würde das ganze wieder von vorn anfangen.
Das wäre dann endlos!
Um deine ursprüngliche Funktion nochmal zu erläutern:
var a=50; // a wird mit 50 initialisiert
function bewegen ()
{
a-=10; // a wird beim Aufruf auf 40 gesetzt (also Schwachsinn)
if (a>50) // ist a>50? Nein, kann es ja nicht mehr sein
{
window.document.laufschrift.left=a; // wird nicht ausgeführt
window.document.laufschrift.top=350;// wird nicht ausgeführt
}
}
Da kann sich also nix bewegen.
Ist ja nun egal.
Ich hoffe es hilft dir bissel weiter!
ciao, Bill