Tabellenmanipulation mit JS

tach Community,

ich habe eine ziemliche schweinerei vor :smile:
und zwar… nachtraeglich mit ID=1 versehen.

Ich habe eine gegebene Tabelle mit „n“ tr’s und td’s
Diese ist definitiv gegeben und kann nicht veraendert werden.
nun moechte ich via javascript folgendes tun:

  • in jede TD (getElementsbyTagName(‚td‘)[n].innerHTML) einen href packen,
    der eine TD - id an eine funktion uebergibt.

daraus folgt mein eigentliches problem:

  • jede td muss nachtraeglich mit einer eindeutigen id versehen
    werden. Wie mache ich das ???

ich kann zwar mit getElementById(id) auf elemente zugreifen… aber wie schreibe ich die genau in eine ??

sowas wie

document.write(getElementsByTagName("td")[n]) = 'id=3';

Aber das ist ja non-sense…
geht das ueberhaupt ?
wenn ja… wiiiiieeeeee ?

merci für die ideen.

gruss

PixelKoenig

daraus folgt mein eigentliches problem:

  • jede td muss nachtraeglich mit einer eindeutigen id versehen
    werden. Wie mache ich das ???

ich kann zwar mit getElementById(id) auf elemente zugreifen…
aber wie schreibe ich die genau in eine ??

sowas wie

document.write(getElementsByTagName(„td“)[n]) = ‚id=3‘;

mal nen test

function idsetzen(setid) {
document.getElementsByTagName(„td“)[setid].id=„T“+setid;
}
function idzeigen(showid) {
var thisid=document.getElementsByTagName(„td“)[showid].id;
alert(thisid);
}
function idshow(showid) {
if (document.getElementById(showid)) {
var thisid=document.getElementById(showid).innerHTML;
}
alert(thisid);
}
[set ID T0 td[0]](javascript:idsetzen(‚0‘)) / [show ID td[0]](javascript:idzeigen(‚0‘))
[set ID T1 td[1]](javascript:idsetzen(‚1‘)) / [show ID td[1]](javascript:idzeigen(‚1‘))
[set ID T2 td[2]](javascript:idsetzen(‚2‘)) / [show ID td[2]](javascript:idzeigen(‚2‘))
[innerHTML by ID T0 if set](javascript:idshow(‚T0‘))
[innerHTML by ID T1 if set](javascript:idshow(‚T1‘))
[innerHTML by ID T2 if set](javascript:idshow(‚T2‘))

it Works — :smile:
tachchen…

mal nen test

document.getElementsByTagName(„td“)[setid].id=„T“+setid;

wo hast du denn diese herrliche schweinerei gefunden ?
und in der tat… es funktionuckelt…
zumindest in FF 3.03 und IE6

ich bin begeistert.
danke

gruss

PixelKoenig

Hallo Pixelkönig,

wo hast du denn diese herrliche schweinerei gefunden ?
und in der tat… es funktionuckelt…
zumindest in FF 3.03 und IE6

Dass es auch im Firefox funktioniert, ist eher enttäuschend, denn von dem ist man eher gewöhnt, dass er gnadenlos validen Code einfordert. Dafür wurde er ja schließlich u.A. entwickelt.

Eine mit einer Ziffer beginnende ID ist nicht valide und deshalb sollte Firefox sich auch weigern, eine solche überhaupt zu beachten.

Wenn den Mozilla-Entwicklern dieser Bug bekannt wird, werden sie ihn bestimmt alsbald beheben. Deshalb: Setz einfach noch ein oder zwei Buchstaben vorne in den der ID zugewiesenen Wert (z.B.: id = „id1“). Mit einer solchen ID bist du sicher, dass es auch zukünftig funktioniert.

Gruß Gernot

Eine mit einer Ziffer beginnende ID ist
nicht valide und deshalb sollte Firefox
sich auch weigern, eine solche überhaupt zu beachten.

na… da haste glaub ich nicht genau hingeschaut…

id="T"+setid;

da ist doch ein „T“ als prefix :smile:

grusz

PixelKoenig

Hallo Pixelkönig,

na… da haste glaub ich nicht genau hingeschaut…

id=„T“+setid;

da ist doch ein „T“ als prefix :smile:

Stimmt, da habe ich nicht genau hingeschaut, allerdings ist mir immer noch nicht klar, wofür du überhaupt eine ID benötigst. Warum hängst du in das in die Tabellenzelle nachträglich hineingenerierte A-Element (oder in die Tabellenzelle selbst) nicht einfach ein onclick-Event, das bezogen auf sich selbst (this) bzw. sein Elternelement (this.parentNode) eine Aktion auslöst. Wofür braucht es da eine ID?

Gruß Gernot

Hi Gernot,

weil mein Realer Auftrag ein wenig komplexer ist ,
als meine Anfrage hier bei W-W-W.

Hintergrund…
ich bekomme eine tabelle…
ohne jegliche IDs.
unter der Tabelle sind weitere bereits ausgeblendete tabellen.
diese ausgeblendeten tabellen haben je einen bezug
zu jeden TR der ersten tabelle.
bei klick auf eine beliebige TD innerhalb einer TR
soll die dazugehoerige tabelle in einem div eingeblendet werden.

das problem dabei … die DIVs existieren auch noch nicht.
ich muss alles drum rumschreiben…mit javascript.
haesslich… aber geht nicht anders.

sinmples beispiel:
Ausgangstabelle:
wert 1 Row1
wert 2 Row1
wert 3 Row1
wert 1 Row2
wert 2 Row2
wert 3 Row2
Details zu Row 1Details zu Row 2 Ziel wie es nachher aussehen soll:

wert 1 Row1

wert 2 Row1

wert 3 Row1

wert 1 Row2

wert 2 Row2

wert 3 Row2

Details zu Row 1

Details zu Row 2

Hallo Pixelkönig,

das sollte ja bei gegebener Struktur auch ohne nachträglich eingefügte DIVs und IDs kein Problem sein:
Tabellenzeilendetails einblenden ohne zusätzliche DIVs
//<![CDATA[
var myTables;
window.onload = function () {
myTables = document.getElementsByTagName(‚TABLE‘);
for ( i = 1; i < myTables.length ; i++ ) {
myTables[i].style.display = ‚none‘;
}
var myClickTRs = myTables[0].rows;
for ( i = 0; i < myClickTRs.length ; i++ ) {
myClickTRs[i].idx = i+1;
myClickTRs[i].onclick = function () {
with(myTables[this.idx].style) {
display = ( display == ‚none‘ ) ? ‚‘ : ‚none‘;
}
}
}
}
// ]]>
wert 1 Row1
wert 2 Row1
wert 3 Row1
wert 1 Row2
wert 2 Row2
wert 3 Row2
Details zu Row 1Details zu Row 2

Gruß Gernot