eval wird nur einmal ausgeführt?
ingo b
- javascript
Hallo,
ich habe für meinen Informatik-Unterricht eine "Entwicklungsumgebung" für JavaScript programiert. Dabei wird in einer Textarea Code eingegeben, der dann per eval() innerhalb eines try-catch-Statements ausgeführt wird.
Zwei Fragen habe ich nun noch:
1. Ich würde gerne beim Benutzen der TAB-Taste nicht ins nächste Feld springen sondern den Cursor/Zeile einrücken. Kann man das irgenwie machen?
2. Ein einfaches Programm würde bei mir so aussehen:
//-------------------------------------------
new Knopf(10,10,"Drück mich","sagHallo()");
function sagHallo() {
alert("Halloooooo ;-)");
}
sagHallo()
//-------------------------------------------
Es wird auch alles richtig gemacht, die Funktion sagHallo() wird ausführen einmal gemacht. Nur der Klick auf den Button (bei mir Knopf) geht nicht, da die Funktion "sagHallo()" nicht vorhanden ist. Ich nehme daher an, dass der js-Code beim eval nicht irgendwie gemerkt wird. Hat dafür jemand eine brauchbare Lösung?
Zum Testen:
http://ingo-bartling.de/info/klasse7/html/js_logo/codingarea_allg.html
Hell-O!
new Knopf(10,10,"Drück mich","sagHallo()");
Wie sieht denn das Objekt "Knopf" aus? Was macht es mit dem Parameter "sagHallo()"?
Es wird auch alles richtig gemacht, die Funktion sagHallo() wird ausführen einmal gemacht.
Sie steht ja auch am Ende deines Codes, wird also einmal ausgeführt.
Zum Testen:
http://ingo-bartling.de/info/klasse7/html/js_logo/codingarea_allg.html
Leider kann man deinen Code dort nicht testen, da Funktionen nicht erlaubt sind.
Siechfred
Wie sieht denn das Objekt "Knopf" aus? Was macht es mit dem Parameter "sagHallo()"?
Das Objekt besteht im Wesentlichen aus folgender Zeile:
var sResult = '<div id="'+this.divId+'" style="position:absolute;'+'left:' + x + 'px;'+'top:' + y + 'px;">'+'<input type="button" value="' + this.label + '" onClick="'+calledFunction+'">'+'</div>';
document.write(sResult);
Zum Testen:
http://ingo-bartling.de/info/klasse7/html/js_logo/codingarea_allg.html
Leider kann man deinen Code dort nicht testen, da Funktionen nicht erlaubt sind.
Stimmt. Das hatte ich vorsichtshalber mal reingemacht. Jetzt ist es wieder draußen und kann getestet werden.
Was meintest du eigentlich mit dem Link? Was sollte ich mit dem Tipp anfangen?
Hell-O!
var sResult = '<div id="'+this.divId+'" style="position:absolute;'+'left:' + x + 'px;'+'top:' + y + 'px;">'+'<input type="button" value="' + this.label + '" onClick="'+calledFunction+'">'+'</div>';
document.write(sResult);
Gut, du schreibst den HTML-Code für den Button in das Domument. Aber wo schreibst du den JS-Code für die Funktion "sagHallo()" hinein? Das eval() sorgt nur dafür, dass der Code evaluiert wird und gibt ein Ergebnis zurück, das war's. Der Code, den du reinschreibst, liefert als Ergebnis den HTML-Code für den Button, die Funktion "sagHallo" wird evaluiert, für gut befunden und verschwindet dann im eval-Nirvana.
Was meintest du eigentlich mit dem Link? Was sollte ich mit dem Tipp anfangen?
Mir gefällt die Variante, mittels eines function-Objektes JS-Code zu evaluieren, besser. Deshalb der Link.
Siechfred