createElement + Event

Suchfunktion

Erfahrenes Mitglied
Hi!

Ich moechte dynamisch DIV-Elemente erstellen lassen.

Klappt sogar *selbst auf die Schulter klopf*
(JS-Anfaenger..)

Nun moechte ich an dieses Element z.B. ein onClick-Event uebergeben.

Hier erstmal mein JS:
Javascript:
function loadForm(field){
	var inValue = field.value;
	var outArea = document.getElementById("output");
	var outTag = document.createElement("div");
	var outText = document.createTextNode(inValue);
	
	outTag.appendChild(outText);
	outTag.id = "out" + (outArea.childNodes.length+1);
	outTag.onClick = "javascript:editText(this);";
	outArea.appendChild(outTag);
}

Die ID und inValue werden korrekt ausgegeben.
Nur mir wird in meinem erstellten DIV kein onClick-Event eingebunden.

Beispielausgabe:
HTML:
<div id="5">foobar</div>

Aber folgendes soll ausgegeben werden:
HTML:
<div id="5" onClick="javascript:editText(this);">foobar</div>

Gibt es eine Moeglichkeit, das so umzusetzen?

Thanks..
 
Hi !

Also du kannst es so programmieren, in dem du eine Referenz auf eine Funktion übergibtst:

Javascript:
function editText()
{
    ....
}

outTag.onClick = editText;

So kannst du aber keine Parameter übergeben ...

Vielleicht klappt das :

Javascript:
var onclickAttribut = document.createAttribute("onclick");
onclickAttribut.nodeValue("editText(this);");

outTag.setAttributeNode(onclickAttribut);

... ist ungetestet !

Mittlerweile mach ich das nur noch über "prototype.js" !

Speziell die Funktionen "bindAsEventListener" und "bind" des Function-Objekts solltest du dir mal anschauen.

Beispiel :

Javascript:
Event.observe(outTag,"click",editText.bindAsEventListener(this));

Grüsse,

Krösi
 
Zuletzt bearbeitet von einem Moderator:
Mit prototype und moo-irgendwas (namen vergessen ^^) habe ich bereits gearbeitet.
(Livesuche realisiert.)

War die Hoelle..

Daher erstmal grundlegendes JS lernen ^^

Danke :-)
 
Hi!

Hat funktioniert.. Sehr schoen!

Nur eine kleine Korrektur:
Javascript:
var onclickAttribut = document.createAttribute("onclick");
onclickAttribut.value("editText(this);");

outTag.setAttributeNode(onclickAttribut);

Also anstelle von
Javascript:
...onclickAttribut.noteValue...
muss es
Javascript:
...onclickAttribut.value...
heissen.

mfg :-)
 
Zuletzt bearbeitet von einem Moderator:
Hi !

Freut mich, wenns funktioniert !

Kann gut nachvollziehen, wenn du sagst, daß es die Hölle war :-) Aber es ist wie mit allem im Leben, hast du es einmal kapiert ist es eine irre Erleichterung und macht Spaß.

Grüsse,
Krösi
 

Neue Beiträge

Zurück