removeChild verhält sich merkwürdig

kastalonien

Mitglied
Hallo...

habe jetzt mal angefangen, mich mit javascript zu beschäftigen, komme aber damit nicht ganz klar.

Von einer Tabelle möchte ich die letzte eine Zeile klonen und dahinter wieder einfügen, das klappt auch ganz gut. Wenn man jedoch eine Zeile wieder löschen will, verhält sich die Funktion ganz merkwürdig:

Wenn ich das erste mal löschen will, muss ich doppelt auf den Löschbutton klicken, bis er eine Zeile, wegnimmt. Beim zweiten mal löschen auch. Erst danach läufts ganz normal. :confused: Ich habe keine Ahnung warum...

dann hab' ich noch ne weitere Frage:

Wie geht das, dass er den Value-Eintrag wieder löscht, wenn ich ne Zeile hinzugefügt habe...

ich hoffe, ihr könnt mir weiterhelfen.

Hier mal mein Testscript:

Code:
<html>
<head>
<title>Test</title>
<script type="text/javascript">
<!--
function clone_row(objButton)
{
 var trackList = document.getElementById("cloneThis").cloneNode(true);
 document.getElementById("Tbody").appendChild(trackList);
 
}

function delete_row(objButton)
{
  var Knoten = document.getElementById("Tbody").firstChild;
  document.getElementById("Tbody").removeChild(Knoten);
}

 
//-->
</script>
</head>
<body>
<form>
 <table><tbody id = "Tbody">
  <tr id = "cloneThis">
   <td>
    <input type = "text" size = "20" name = "textfeldname[]"><br>
   </td>
  </tr>
 </tbody>
 <tbody>
  <tr>
   <td>
    <input type = "button" value = "noch eins" onclick = "clone_row(this)">
    <input type = "button" value = "löschen" onclick = "delete_row(this)">
   </td>
  </tr>
 </tbody></table>
</form>
</body>
</html>


Kastalonien
 
ja also ich merk' gerade, dass es nur bei Firefox wie beschrieben ist...bei safari läufts ganz normal, beim IE geht gar nicht's (aber das weiß ich schon, der hat probleme mit Javascript)...weiß jemand, warum das sich bei mozilla so merkwürdig verhält? Vielleicht liegt's auch nur an meinen Browsereinstellungen bezüglich Javascript:confused:
 
Wie gesagt...bei mir funktioniert da alles, sowohl im Mozilla als auch im IE.... also fällt es schwer, einen Fehler ausfindig zu machen, wo keiner erkennbar ist.
 
ja das wird wohl an browserinternen Einstellungen liegen...

nochmal zu meiner anderen Frage. Wie lösche ich den Value-Wert

Außerdem hab' ich versucht die ganze Sache zu erweitern, was aber irgendwie nicht funktioniert:

Das Programm soll vor dem Textfeld die Tracknummer angeben...allerdings bleibt var i immer bei 1 stehen, ich weiß nicht ganz warum, ist doch ne globale Variable...

Code:
<html>
<head>
<title>Test</title>
<script type="text/javascript">
<!--
var i = 1;

function clone_row(objButton)
{
 
 var trackList = document.getElementById("cloneThis").cloneNode(true);
 document.getElementById("Tbody").appendChild(trackList);
 i++;
}

function delete_row(objButton)
{
  var Knoten = document.getElementById("Tbody").firstChild;
  document.getElementById("Tbody").removeChild(Knoten);
  i--;
}

function trackList()
{
 document.write("Track " + i);
} 


//-->
</script>
</head>
<body>
<form>
 <table><tbody id = "Tbody">
  <tr id = "cloneThis">
   <td></td>
   <td><script>trackList()</script></td>
   <td>
    <input type = "text" size = "20" name = "textfeldname[]"><br>
   </td>
  </tr>
 </tbody>
 <tbody>
  <tr>
   <td>
    <input type = "button" value = "noch eins" onclick = "clone_row(this)">
    <input type = "button" value = "löschen" onclick = "delete_row(this)">
   </td>
  </tr>
 </tbody></table>
</form>
</body>
</html>
 
Das Programm soll vor dem Textfeld die Tracknummer angeben...allerdings bleibt var i immer bei 1 stehen, ich weiß nicht ganz warum, ist doch ne globale Variable...
Du verwendest den Wert der Variablen aber nur 1 einziges mal - und zwar wenn du Seite geladen wird. Wie sollte sich denn der Text in der zweiten Spalte automatisch ändern? Den mußt du schon explizit auf den neuen Wert setzen.

Gruß
 
Da mir hier anscheinend keiner weiterhelfen kann, hab ich mich mal selber durchgekämpft...trotzdem gibt's noch ein problem:

Code:
<script type="text/javascript">
<!--

var i = 1;

function clone_row(objButton)
{
 var trackList = document.getElementById("cloneThis").cloneNode(true);
 document.getElementById("Tbody").appendChild(trackList);
 
 i++;
 var titel = document.createTextNode("Titel " + i);
 document.getElementById("Tbody").lastChild.childNodes[1].replaceChild(titel, document.getElementById("Tbody").lastChild.childNodes[1].firstChild); 
  
}
function delete_row(objButton)
{
  if (44<document.getElementById("Tbody").childNodes.length)
   {
    i--;
    var Knoten = document.getElementById("Tbody").lastChild;
    document.getElementById("Tbody").removeChild(Knoten);
   }
}

die Tabelle sieht von der Form her so aus:

Code:
<table><tbody id = "Tbody">
  <tr></tr>
 ...
 ...
 <tr id = \"cloneThis\">
  <td></td>
     <td class = \"normal\" width = \"170\">Titel 1</td>
     <td>
      <input type = \"text\" size = \"66\" name = \"track[]\">
     </td>
  </tr>
 </tbody>


Wo liegt der Fehler...

Die Fehler Konsole gibt

"uncaught exception: [Exception... "Componet returned failture code: 0x80004003 (NS_INVALID_POINTER)...usw"

aus, aber ehrlich gesagt kann ich damit nicht viel anfangen...

Danke für eure Hilfe
 

Neue Beiträge

Zurück