Event-Handler-Textinhalt abfragen
Werner
- javascript
Wie frage ich in JavaScript den Inhalt eines Event-Handlers ab?
Das Problem: Serverseitig erzeuge ich mit php einen <div-Tag mit einem id- und einem onmousedown-Attribut, das Daten aus einer Datenbank anzeigt. Der erzeugte Quelltext sieht dann z.B. so aus:
<div id="bel13" onmousedown="this.innerHTML='142'">Text</div>
Mit JavaScript möchte ich beim Client letztlich den Inhalt von innerHTML, hier 142, zurückgeliefert bekommen.
Mit folgendem Code
var div1 = document.getElementById(bel13);
owner1=div1.innerHTML;
owner2=div1.onmousedown;
erhalte ich folgenden Rückgabewert für owner2:
{function anonymous()
this.innerHTML='142'
}
Ich habe schon versucht mit der substr-Funktion die Rückmeldung als String anzusprechen, das geht aber nicht. owner2 hat als string die Länge 0.
Wie kann ich den Wert daraus holen?
Gibt es eine Eigenschaft von onmousedown, die man direkt ansprechen kann?
Ich habe im Internet nirgends was gefunden? Wer hat eine Idee?
Werner
Hallo,
Ich habe im Internet nirgends was gefunden? Wer hat eine Idee? Werner
Ich würde das folgendermaßen lösen. Mit PHP im Head-Bereich der Seite einen Scriptbereich generieren... <script type="text/javascript"> var werte = new Array(); werte["bel13"] = 142; ... </script>
<div id="bel13" onmousedown="this.innerHTML=werte[this.id]">Text</div>
Jetzt kannst Du statt
var div1 = document.getElementById(bel13); owner1=div1.innerHTML; owner2=div1.onmousedown;
einfach machen: owner2 = werte["bel13"];
Bin mir nicht ganz sicher, ob das Array dann überall im Dokument gültig ist, aber irgendwie lässt sich das so hinbekommen.
Schöne Grüße Axel
Lieber Axel,
> <script type="text/javascript">
> var werte = new Array();
> werte["bel13"] = 142;
> ...
> </script>
Bin mir nicht ganz sicher, ob das Array dann überall im Dokument gültig ist, aber irgendwie lässt sich das so hinbekommen.
das ist es. Das Script wird beim Laden der Seite schon ausgeführt, steht also nicht innerhalb einer Funktion o.ä. Daher ist die Variable "werte" (also das Array) global verfügbar. Jede Funktion kann also direkt das Array "werte" erreichen.
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Mit folgendem Code
var div1 = document.getElementById(bel13);
owner1=div1.innerHTML;
owner2=div1.onmousedown;erhalte ich folgenden Rückgabewert für owner2:
{function anonymous()
this.innerHTML='142'
}
Das ist die funktionsreferent auf die Funktion, die ausgeführt wird, wenn der Event eintritt.
Ich habe schon versucht mit der substr-Funktion die Rückmeldung als String anzusprechen, das geht aber nicht. owner2 hat als string die Länge 0.
Wenn du mal eijn alert( typeof owner2) gemacht hast, weißt du warum.
Du kannst aber natürlich die Funktion umwandeln mit .toString() die Frage ist nur warum du das willst.
Gibt es eine Eigenschaft von onmousedown, die man direkt ansprechen kann?
Ich habe im Internet nirgends was gefunden? Wer hat eine Idee?
onmousedown ist, wie gesagt, ein Zeiger auf eine Funktion, was willst du da ansprechen?
Struppi.
Das ist die funktionsreferent auf die Funktion, die ausgeführt wird, wenn der Event eintritt.
Danke, das war ein sehr hilfreicher Tipp mit der Referenz auf die Funktion!
Mit folgendem Code erhalte ich jetzt den im onmousedown-Event-Handlers gespeicherten Inhalt aus meiner Datenbank.
fowner2=div1.onmousedown.toString();
teil=fowner2.length-39-3;
owner2=fowner2.substr(39, teil);
Wenn du mal eijn alert( typeof owner2) gemacht hast, weißt du warum.
Du kannst aber natürlich die Funktion umwandeln mit .toString() die Frage ist nur warum du das willst.
Zu Deiner Frage nach dem Zweck der Prozedur: ich lasse php die Daten eines Raumbelegungs- und Reservierungsplans aus der mysql-Datenbank in eine kleine Tabelle (Wochenstundenplan) für unser Intranet schreiben. Für jede vorhandene Belegung werden zwei weitere Werte aus der Datenbank in onmouseover- und onmousedown-Event-Handler geschrieben. Der im onmousedown gespeicherte Wert enthält den Usernamen des Users, der die Reservierung vorgenommen hat und entscheidet dann darüber, ob der neue Besucher mit diesem Identisch ist und die Belegung löschen darf. Das erschien mir einfacher, als bei jedem Aufruf der Seite einen jeweils verschieden großen Stapel Formularvariablen oder JS-Variablen mitzuliefern.
Nochmals danke für die schnelle Hilfe!
fowner2=div1.onmousedown.toString();
teil=fowner2.length-39-3;
owner2=fowner2.substr(39, teil);Wenn du mal eijn alert( typeof owner2) gemacht hast, weißt du warum.
Du kannst aber natürlich die Funktion umwandeln mit .toString() die Frage ist nur warum du das willst.
Zu Deiner Frage nach dem Zweck der Prozedur: ....
Ich bin mir ziemlich sicher das das wesentlich einfacher ginge, allerdings müßte man dazu Wissen, zu welchem Zeitpunkt du das obige machst.
Struppi.