nach dem Laden: function definieren
ingo b
- javascript
Einen schönen Vatertag zusammmen,
ich würde gerne für eine Art Programmierumgebung dem User die Möglichkeit geben nachträglich js-Funktionen zu definieren. Nach dem das mit eval nicht funtionert hat, wollte ich mal fragen ob man das nicht irgendwann anders machen kann.
Könnte man das zB irgendwie an document hängen? Ich dachte an so etwas:
document.meineFunktion = function() {
alert("dsadas")
}
Ich könnte dann einen "parser" machen, der den Funktionsnamen und die Paramter rausfischt.
Stimmt das alles irgenwie von der Idee? Gibt es was besseres? Kann man Funktionen so ans Dokument hängen?
Einen schönen Vatertag noch..
Stimmt das alles irgenwie von der Idee? Gibt es was besseres? Kann man Funktionen so ans Dokument hängen?
Was meinst du mit ans Dokument hängen?
Du kannst neue Funktionen mit dem Function Objekt definieren. Warum willst du die funktion unbedingt im Dokument haben? Üblich ist im window
Struppi.
Was meinst du mit ans Dokument hängen?
Ich habe eine JS-Library geschrieben zum Erstellen von HTML-Seiten. Dazu möchte ich ein Textfeld zum Programmieren anbieten.
new Knopf(10,10,"Drück mich","sagHallo()");
function sagHallo() {
alert("Halloooooo ;-)");
}
Dieser Beispielcode erstellt eine leere Seite mit einem Button (Aufschrift "Drück mich"), wobei beim Klicken die Funktion sagHallo() gemacht werden soll.
Das Ganze wird duch eval ausgeführt. Es erscheint der Button aber er kennt die Funktion leider nicht. Also wollte ich die Funktion von Hand ins window-objekt reinhängen.
Du kannst neue Funktionen mit dem Function Objekt definieren. Warum willst du die funktion unbedingt im Dokument haben? Üblich ist im window
Das wusste ich nicht. Ich schaue es mir an und versuche es mal.
Was meinst du mit ans Dokument hängen?
Ich habe eine JS-Library geschrieben zum Erstellen von HTML-Seiten. Dazu möchte ich ein Textfeld zum Programmieren anbieten.
Naja, dann wird auch nichts an's Dokument gehängt.
new Knopf(10,10,"Drück mich","sagHallo()");
function sagHallo() {
alert("Halloooooo ;-)");
}Dieser Beispielcode erstellt eine leere Seite mit einem Button (Aufschrift "Drück mich"), wobei beim Klicken die Funktion sagHallo() gemacht werden soll.
Das Ganze wird duch eval ausgeführt. Es erscheint der Button aber er kennt die Funktion leider nicht. Also wollte ich die Funktion von Hand ins window-objekt reinhängen.
Du meinst in etwa so:
function test()
{
var func = 'sagHallo()';
var btn = document.createElement('input');
btn.type= 'button';
btn.value = 'Drück mich';
btn.onclick = new Function('', func);
document.body.appendChild( btn);
}
function sagHallo() {
alert("Halloooooo ;-)");
}
<div onclick="test()">klick</div>
Struppi.