Javascript: document.getElementsByName("content")[?]
Alarska
- javascript
Hi,
ich bräuchte Hilfe bei dem folgenden Problem:
wenn ich auf eine Tabellenzelle klicke, deren Name "content" ist, möchte ich gerne diesen Namen zurückbekommen, allerdings nicht alleine, sondern incl. des Index dieser Zelle... Also z.B. "content[3]" für die dritte Zelle mit dem Namen "content".
Ziel ist es, diese Zelle dann per
document.getElementsByName('content')[INDEX]
anzusprechen. Bisher habe ich
alert(this.getAttributeNode('name'));
probiert, aber das liefert mir nur den Namen, nicht den Index. Hatt da jemand eine Idee?
Danke schon mal!!
alert(this.getAttributeNode('name'));
Sorry, ich meinte natürlich
alert(this.getAttribute('name'));
Yerf!
Ziel ist es, diese Zelle dann per
document.getElementsByName('content')[INDEX]
anzusprechen.
Da Tabellenzellen in HTML keinen Namen haben dürfen wird dieses Vorhaben scheitern. (Das manche Browser trotzdem mitspielen ist eher Zufall)
Bisher habe ich
alert(this.getAttributeNode('name'));
probiert, aber das liefert mir nur den Namen, nicht den Index. Hatt da jemand eine Idee?
this ist doch schon die Referenz auf die gesuchte Tabellenzelle. Weshalb der Umweg über den Namen und getElementsByName um schlussendlich wieder genau dieselebe Referenz zu bekommen?
Gruß,
Harlequin
Hey!
Da Tabellenzellen in HTML keinen Namen haben dürfen wird dieses Vorhaben scheitern. (Das manche Browser trotzdem mitspielen ist eher Zufall)
ich spreche die Zellen aber per
var contents = new Array();
contents = document.getElementsByName("content");
for(var i=0; i<contents.length; i++)
{
contents[i].style.backgroundImage = "url(bild.gif)";
}
an... und das geht ja per getElementById nicht!? Also müsste ich in jede Zelle erst noch einen <div> - Container einbauen, damit alles korrekt ist?
this ist doch schon die Referenz auf die gesuchte Tabellenzelle. Weshalb der Umweg über den Namen und getElementsByName um schlussendlich wieder genau dieselebe Referenz zu bekommen?
falls ich aber alert(this);
schreibe, kommt zurück "[object HTML TableCellElement]", ganz egal wohin ich klicke :-(
Yerf!
an... und das geht ja per getElementById nicht!? Also müsste ich in jede Zelle erst noch einen <div> - Container einbauen, damit alles korrekt ist?
Ein <div> hilft da auch nicht weiter, das Name-Attribut ist nur an Formularelementen erlaubt. Also entweder per fortlaufender ID (getElementById('content'+i)) oder einen anderen Weg suchen die Tabellenzellen anzusprechen (evtl. per getElementsByTagName, angewendet auf die Tabelle oder auch über die rows/cols-Collection der Tabelle).
this ist doch schon die Referenz auf die gesuchte Tabellenzelle. Weshalb der Umweg über den Namen und getElementsByName um schlussendlich wieder genau dieselebe Referenz zu bekommen?
falls ich aber
alert(this);
schreibe, kommt zurück "[object HTML TableCellElement]", ganz egal wohin ich klicke :-(
alert(document.getElementsByName("content")[1]); liefert das gleiche...
Wofür brauchst du die Referenz denn später, evtl. lässt sich das ganze dann leichter erklären.
Gruß,
Harlequin
Ein <div> hilft da auch nicht weiter, das Name-Attribut ist nur an Formularelementen erlaubt.
Formularelemente wie a
, img
, object
, map
, param
und meta
(strikter Doctype) sowie applet
, frame
und iframe
(andere Doctypes)?
Ok, danke erstmal an euch alle, hat mir schon sehr weitergeholfen! Ich werd mal dran arbeiten und dann melde ich mich nochmal!
Gruß
Alex
Mahlzeit Alarska,
var contents = new Array();
contents = document.getElementsByName("content");
for(var i=0; i<contents.length; i++)
{
contents[i].style.backgroundImage = "url(bild.gif)";
}
>
> an... und das geht ja per getElementById nicht!? Also müsste ich in jede Zelle erst noch einen <div> - Container einbauen, damit alles korrekt ist?
Nein. Du willst offenbar HTML-Elemente, die kein "name"-Attribut haben (dürfen), in irgendeiner Form zusammenfassen - sie also <http://de.selfhtml.org/html/attribute/allgemeine.htm#uebersicht@title=klassifizieren>. Dann kannst Du ganz einfach in Javascript mittels <http://de.selfhtml.org/javascript/objekte/document.htm#get_elements_by_tag_name@title=getElementsByTagName> alle Tabellenzellen heraussuchen, überprüfen, ob sie der gewünschten Klasse angehören und dann das tun, was Du tun willst.
> > this ist doch schon die Referenz auf die gesuchte Tabellenzelle. Weshalb der Umweg über den Namen und getElementsByName um schlussendlich wieder genau dieselebe Referenz zu bekommen?
>
> falls ich aber `alert(this);`{:.language-javascript} schreibe, kommt zurück "[object HTML TableCellElement]", ganz egal wohin ich klicke :-(
Natürlich. Wie sollte ein Browser in einem Meldungsfenster sonst ein komplexes Objekt darstellen? Du weißt, was <http://de.selfhtml.org/javascript/sprache/objekte.htm#this@title=this> bedeutet?
MfG,
EKKi
--
sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|