Verständnis Frage
bernd
- javascript
0 Struppi
Hallo zusammen,
ich habe mir folgende Funktion gebaut, die eine komplette tr kopiert:
<html>
<head>
<title>JavaScript und DOM</title>
<script type="text/javascript">
function tr_klonen(id)
{
var zuKopieren, kopie;
zuKopieren = document.getElementById( id );
if(zuKopieren)
{
kopie = zuKopieren.cloneNode( zuKopieren.firstChild );
zuKopieren.parentNode.insertBefore( kopie, zuKopieren );
}
</script>
</head>
<body>
<table border="1">
<tr id="tr1" onclick="tr_klonen( 'tr1' );">
<td id="td1">nur ein text 1</td>
<td id="td1">nur ein text 1.1</td>
</tr>
<tr id="tr2" onclick="tr_klonen('tr2');">
<td id="td2">nur ein text 2</td>
<td id="td1">nur ein text 2.1</td>
</tr>
</table>
</body>
</html>
Die Vorlage für die Funktion "tr_klonen" habe ich im Internet gefunden und sie angepasst.
Nur was die Funktion im einzelnen macht, kann ich leider nicht nachvollziehen :-(
Also mein Verständnis.
Als erstes werden zwei Variablen "zuKopieren" und "kopie" erzeugt.
Danach wird ein Objekt erstellt, der zu kopieren tr Zeile und in die Varialbe "zuKopieren" "geschieben", danach eine if - Prüfung und als nächstes kopieren (dh. cloneNode) des Objekt.
Nachfolgend wird die Variable "kopie" über den "parantNod" eingefügt vor dem "Eltern Knoten" "zuKopieren".
Stimmt dieses Vorgehen?
Als nächstes, stellt sich für mich die Frage, wie kann ich auf die beiden "Objekte" zugreifen und ihre ID, als Bsp. ändern?
grüße bernd
ich habe mir folgende Funktion gebaut, die eine komplette tr kopiert:
du hast ein paar Hinweise die du bekommsen hast nicht beherzigt.
ok, aber erst das Skript.
function tr_klonen(id)
{
var zuKopieren, kopie;
zuKopieren = document.getElementById( id );
hier holst du das Element per Id.
wäre aber überflüssig, da du die Funktion so aufrufst:
<tr id="tr1" onclick="tr_klonen( 'tr1' );">
es ginge auch
<tr id="tr1" onclick="tr_klonen( this );">
und du sparst getElementById
if(zuKopieren)
{
kopie = zuKopieren.cloneNode( zuKopieren.firstChild );
Du kopierst den ersten Knoten nach dem TR Element, das kann ein Zeilemumbruch oder ein Leerezeichen sein, also ein Textknoten oder ein TD Element, je nach dem wie dein Quellcode aussieht und welchen Browser du den Code gibst. Ist also ein sehr unsichere sache - das wurde dir glaub ich auch schon gesagt.
zuKopieren.parentNode.insertBefore( kopie, zuKopieren );
fügen den Text- oder Elementknoten vor dem TR Element ein, nicht besonders sinnvoll eigentlich.
Die Vorlage für die Funktion "tr_klonen" habe ich im Internet gefunden und sie angepasst.
aber nicht gut.
Also mein Verständnis.
Als erstes werden zwei Variablen "zuKopieren" und "kopie" erzeugt.
Danach wird ein Objekt erstellt, der zu kopieren tr Zeile und in die Varialbe "zuKopieren" "geschieben", danach eine if - Prüfung und als nächstes kopieren (dh. cloneNode) des Objekt.
das ist falsch du kopierst firstChild, was immer das ist.
Nachfolgend wird die Variable "kopie" über den "parantNod" eingefügt vor dem "Eltern Knoten" "zuKopieren".
nicht ganz, du fügst im dem parentNode das Objekt kopie vor dem TR element ein. Das ist soweit ich das sehe - wie man so sagt - durch die Brust ins Knie geschossen.
Stimmt dieses Vorgehen?
Kommt drauf an was du erreichen willst.
Als nächstes, stellt sich für mich die Frage, wie kann ich auf die beiden "Objekte" zugreifen und ihre ID, als Bsp. ändern?
Naja, in dem du einfach auf sie zugreifst. Beispielweise kopie.id = '....'
Struppi.