id ermitteln
kati
- javascript
hallo zusammen,
ich bin auf ein Problem gestoßen und weiß nicht mehr, was ich tun soll. Also..
-----ich erzeuge dynamisch html-Elemente... wie folgend:------
//Code.............
//4. Spalte = "Eigenschaft hinzufügen"; neue Zelle erzeugen
var zelle_4 = document.createElement("td");
Attribute_setzen("width", "30", zelle_4);
var inhalt_4 = document.createElement("input");
Attribute_setzen("type", "image", inhalt_4);
Attribute_setzen("src", "Bilder/Add.gif", inhalt_4);
Attribute_setzen("alt", "Eigenschaft hinzufügen", inhalt_4);
//ID der Schaltfläche ==spalten_anzahl+1 (d.h. inkl. neue Spalte)
Attribute_setzen("id", String("add-"+ eval(spalten_anzahl+1)), inhalt_4);
//Code.............
-------die Methode Attribute_setzen() ist nicht so wichtig ......----
//funktion für das Setzen von Attributen, die zur Laufzeit generiert werden
function Attribute_setzen(attr, attr_value, el) {
var elem_attr = document.createAttribute(attr);
elem_attr.nodeValue = attr_value;
el.setAttributeNode(elem_attr);
}
------dann habe ich ein Event für die Schaltfläche registriert----
//Registrieren
function add_register() {
var add_id = "add-" + document.getElementById("alle_spalten").rows.length;
document.getElementById(add_id).attachEvent("onclick", add_setting);
}
-----beim Anklicken soll ID ausgegeben werden, WIE ? ----------
function add_setting() {
alert(this.getAttributeNode("id"));
}
Und das funktioniert nicht (this.getAttributeNode)... wie kann ich auf das Attribut der Schaltfläche zugreifen ? und zwar wenn sie angeklickt wird ?
danke kati
Hallo kati,
mit welchem Browser das nicht geht, gehört eigentlich noch dazugeschrieben. Wenn Du nur die id willst, dann mach halt einfach
function add_setting() {
alert(this.id);
}
MfG. Lutz T.
Hallo und danke für deine Antwort.
so habe ich es schon gemacht. Geht net !!!
Fällt dir da noch was ein ?
thnx
cu kati
Hallo kati,
mit welchem Browser das nicht geht, gehört eigentlich noch dazugeschrieben. Wenn Du nur die id willst, dann mach halt einfach
function add_setting() {
alert(this.id);
}
MfG. Lutz T.
sorry, habe vergessen
es kommt "undefined" raus.
cu kati
Hallo und danke für deine Antwort.
so habe ich es schon gemacht. Geht net !!!
Fällt dir da noch was ein ?
thnx
cu kati
Hallo kati,
mit welchem Browser das nicht geht, gehört eigentlich noch dazugeschrieben. Wenn Du nur die id willst, dann mach halt einfach
function add_setting() {
alert(this.id);
}
MfG. Lutz T.
Hallo Kati,
die Ursache liegt vermutlich hier:
document.getElementById(add_id).attachEvent("onclick", add_setting);
Nimm statt dessen
document.getElementById(add_id).onclick=add_setting;
dann müßte es eigentlich gehn.
MfG. Lutz T.
PS: Ich weiß immer noch nicht, welchen Browser Du nimmst, ist wohl ein Geheimnis?
hallo Lutz !!!
danke, es funktioniert... kannst du mir noch erklären, wieso es direkt geht...eigentlich bemühe ich mich um saubere Programmierung...also wie z.B. das Setzen von Attributen habe ich früher direkt gemacht, jetzt mache ich es über setAttributeNode...obwohl es direkt auch geht. Ich dachte, da muss was dran sein... kannst du mir es erklären, ich meine den Unterschied zwischen direktem Zugriff auf onclick und der Methode attachEvent. Ich wollte schon ne eigenen Klasse für "AddButtons" machen, damit ich dann die Attribute in einer Klasse "kapseln" kann. Da sah ich aber keinen Sinn, weil alles ja sowieso schon in dem Objekt (z.B. input) selbst gekapselt wird. Komisch...
Appropo...ich benutze IE Version 6.(und ein paar Zerkwetschte :-)).
vielen Dank..so simple und ich komme nicht drauf...
gruss aus wien kati
Hallo Kati,
die Ursache liegt vermutlich hier:
document.getElementById(add_id).attachEvent("onclick", add_setting);
Nimm statt dessen
document.getElementById(add_id).onclick=add_setting;
dann müßte es eigentlich gehn.
MfG. Lutz T.
PS: Ich weiß immer noch nicht, welchen Browser Du nimmst, ist wohl ein Geheimnis?
hallo Lutz !!!
Hallo Kati !!!
danke, es funktioniert... kannst du mir noch erklären, wieso es direkt geht...
im Erklären bin ich eigentlich nicht so gut, meine Stärke ist eher das Rumkritisieren ;->
eigentlich bemühe ich mich um saubere Programmierung...
Vorbildlich!
also wie z.B. das Setzen von Attributen habe ich früher direkt gemacht, jetzt mache ich es über setAttributeNode...
Mit dem Effekt, daß Deine Seiten auch wirklich nur von den allerneusten Browsern verstanden werden.
obwohl es direkt auch geht. Ich dachte, da muss was dran sein... kannst du mir es erklären, ich meine den Unterschied zwischen direktem Zugriff auf onclick und der Methode attachEvent.
Beim Zuweisen einer Funktion X mittels attachEvent kannst Du dann
event-Attribute abfragen, z.B. function X(event) { alert(event.x) }, das kann manchmal nützlich sein, das könntest Du mit der anderen Methode sonst nicht, das braucht man schließlich auch manchmal.
Ich wollte schon ne eigenen Klasse für "AddButtons" machen, damit ich dann die Attribute in einer Klasse "kapseln" kann. Da sah ich aber keinen Sinn, weil alles ja sowieso schon in dem Objekt (z.B. input) selbst gekapselt wird. Komisch...
Jaja, mit dem objektorientierten und Javascript ist das so eine Sache, so richtig "kapseln" wie in C++ nämlich Sachen als private zu deklarieren, damit man von außerhalb der Klasse nicht zugreifen kann, das geht ja in JavaScript gar nicht (man brauchts aber auch nicht unbedingt). Weniger schön ist, daß es keine Vererbung gibt, jedenfalls ist mir da nichts bekannt.
Appropo...ich benutze IE Version 6.(und ein paar Zerkwetschte :-)).
Da kann ich nicht mithalten, bei mir steht da nur 5.5
vielen Dank..so simple und ich komme nicht drauf...
Es war mir eine Ehre. Hab übrigens noch eine Variante gefunden:
obj=document.getElementById(add_id);
obj.attachEvent("onclick", new Function("add_setting(obj)");
In der Funktion add_setting kann dann das Objekt als Argument ausgelesen werden.
gruss aus wien kati
Gruß aus Gamblingen (http://www.tu-chemnitz.de/~luta/streich/online.html)
Lutz
Hallo Lutz !
nochmals vielen Dank...das mit new Function schaut ziemlich wild aus...
Es war mir auch eine Ehre ;-) wo studierst du ? TU Chemnitz ? Hast du die Spiele programmiert ? Javascript ? Naja, ich bastle jetzt an so einer Art mysqlEditor oder so mit php, javascript und mysql natürlich. Mal schaun was draus wird. Mit javascript scheinst du dich gut auszukennen *schmeichle*...nö wirklich.
cu kati
hallo Lutz !!!
Hallo Kati !!!
danke, es funktioniert... kannst du mir noch erklären, wieso es direkt geht...
im Erklären bin ich eigentlich nicht so gut, meine Stärke ist eher das Rumkritisieren ;->
eigentlich bemühe ich mich um saubere Programmierung...
Vorbildlich!
also wie z.B. das Setzen von Attributen habe ich früher direkt gemacht, jetzt mache ich es über setAttributeNode...
Mit dem Effekt, daß Deine Seiten auch wirklich nur von den allerneusten Browsern verstanden werden.
obwohl es direkt auch geht. Ich dachte, da muss was dran sein... kannst du mir es erklären, ich meine den Unterschied zwischen direktem Zugriff auf onclick und der Methode attachEvent.
Beim Zuweisen einer Funktion X mittels attachEvent kannst Du dann
event-Attribute abfragen, z.B. function X(event) { alert(event.x) }, das kann manchmal nützlich sein, das könntest Du mit der anderen Methode sonst nicht, das braucht man schließlich auch manchmal.
Ich wollte schon ne eigenen Klasse für "AddButtons" machen, damit ich dann die Attribute in einer Klasse "kapseln" kann. Da sah ich aber keinen Sinn, weil alles ja sowieso schon in dem Objekt (z.B. input) selbst gekapselt wird. Komisch...
Jaja, mit dem objektorientierten und Javascript ist das so eine Sache, so richtig "kapseln" wie in C++ nämlich Sachen als private zu deklarieren, damit man von außerhalb der Klasse nicht zugreifen kann, das geht ja in JavaScript gar nicht (man brauchts aber auch nicht unbedingt). Weniger schön ist, daß es keine Vererbung gibt, jedenfalls ist mir da nichts bekannt.
Appropo...ich benutze IE Version 6.(und ein paar Zerkwetschte :-)).
Da kann ich nicht mithalten, bei mir steht da nur 5.5
vielen Dank..so simple und ich komme nicht drauf...
Es war mir eine Ehre. Hab übrigens noch eine Variante gefunden:
obj=document.getElementById(add_id);
obj.attachEvent("onclick", new Function("add_setting(obj)");
In der Funktion add_setting kann dann das Objekt als Argument ausgelesen werden.
gruss aus wien kati
Gruß aus Gamblingen (http://www.tu-chemnitz.de/~luta/streich/online.html)
Lutz