CandlesMan: Problem mit removeChild

Hi,

kann mir bitte jemand sagen, wie ich einen Knoten gezielt löschen kann. Ich habe das hier:

  
  <table id="t1">  
	<tr>  
          <td>  
            <table id="t2">  
	      <tr><td></td></tr>  
            </table>  
          </td>  
        </tr>  
  </table>  

Ich finde mit

  
   var Knoten = document.getElementsByTagName("table")[0].lastChild;  

die Tabele mit der id "t1" und möchte ich auch diese Tablle (t1) mit

  
   document.getElementsByTagName("table")[0].removeChild(Knoten);  

löschen. Es wird aber immer die Tabelle mit der id "t2" gelöscht. Wie kann man nun dies durchführen.

Danke im Voraus.

  1. Hi,

    <table id="t1">
    <tr>
              <td>
                <table id="t2">
          <tr><td></td></tr>
                </table>
              </td>
            </tr>
      </table>

    
    >   
    > Ich finde mit  
    >   
    > ~~~javascript
      
    
    >    var Knoten = document.getElementsByTagName("table")[0].lastChild;  
    > 
    
    

    die Tabele mit der id "t1"

    Nein, damit findest du das (letzte) TR-Element unterhalb von #t1.

    Du scheinst eine falsche Vorstellung davon zu haben, was lastChild ist.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. Hi,

      danke für die Antwort.
      Nein das war eine Notlösung. Ich habe alle varianten ausprobiert. Gibt es nun eine Möglichkeit, t1 selbst zu löschen?

      Danke

    2. Hi,

      <table id="t1">
      <tr>
              </tr>
        </table>

      
      > > ~~~javascript
        
      
      > >    var Knoten = document.getElementsByTagName("table")[0].lastChild;  
      > > 
      
      

      die Tabele mit der id "t1"
      Nein, damit findest du das (letzte) TR-Element unterhalb von #t1.

      Sicher? Könnte m.E. auch das (einzige/letzte) tbody sein ...

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      O o ostern ...
      Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
      1. Sicher? Könnte m.E. auch das (einzige/letzte) tbody sein ...

        Oder ein Textknoten. (Zulässigkeit hin oder her...)

        Der Thread entwickelt sich ohnehin zu einem schönen Beispiel dafür, was passiert, wenn der TO falsche oder ungenügende Angaben zu seinem Problem macht.

        Jörg Reinholz

  2. var Knoten = document.getElementsByTagName("table")[0].lastChild;

      
    Warum willst Du in dieser Weise auf ein Objekt zugreifen welches eine ID hat. Was Du willst könntest Du bequem, schnell und sicher mit  
      
    ~~~javascript
      
    var Knoten = document.getElementsById("t2");  
    
    

    adressieren und mit

      
    if (Knoten) {  
        Knoten.parentNode.removeChild(Knoten);  
    }  
    
    

    löschen.

    Jörg Reinholz

    1. Hallo Jörg,

      vielen Dank. Leider sind die Tabellen in einem Objekt gespeichert. Ich muss also die Anweisungen direkt darauf anwenden.

        
         var Knoten = object.dieTabelle.getElementsById("t2");  
      
      

      'dieTabelle' ist eine variable, in der die Tabellen gespeichert sind. Bei deinem Lösung bekommen ich die Fehlermeldung: "object.dieTabelle.getElementsById is not a funktion". Dies geschiet aber mit "object.dieTabelle.getElementsByTagName" nicht. Daher war ich so auf "getElementsByTagName" fixiert.

      Gruß

      1. var Knoten = object.dieTabelle.getElementsById("t2");

        
        >   
        > Bei deinem Lösung bekommen ich die Fehlermeldung: "object.dieTabelle.getElementsById is not a funktion".  
          
        Was auch kein Wunder ist. document.getElementsById("t2") entält ein "s" zu viel. Es muss  
          
        `document.getElementById("t2")`{:.language-javascript}  
          
        heißen. Bis hierher mein Fehler.  
          
        
        > vielen Dank. Leider sind die Tabellen in einem Objekt gespeichert. Ich muss also die Anweisungen direkt darauf anwenden.  
          
        Wenn die Tabelle angezeigt wird, dann ist die auch im DOM adressierbar - also auch im Objekt "document" mit der Methode "getElementById" - sonst müsste man fragen, warum es Document Object Model heißt.  
          
        Was ist denn Dein Objekt "object"? - Kannst Du uns das mal zeigen?  
          
        [Jörg Reinholz](http://www.fastix.org)
        
        1. Das mit "s" habe ich bereits bemerkt, danke. Mein object ist eine normale Methode namens "Benutzer".

            
          function Benutzer() {  
             myTable = "der bereits erwähnte HTML-Code";  
            
             this.getTable() = function {  
                return myTable();  
             };  
            
          }  
            
          var benutzer = new Benutzer();  
          benutzer.myTable();  
          
          

          Der Code wird dann irgendwo in der Seite eingefügt.

          Gruß

          1. Moin!

            Das mit "s" habe ich bereits bemerkt, danke. Mein object ist eine normale Methode namens "Benutzer".

            function Benutzer() {
               myTable = "der bereits erwähnte HTML-Code";

            this.getTable() = function {
                  return myTable();
               };

            }

            var benutzer = new Benutzer();
            benutzer.myTable();

              
            Kommentar?  
              
            "Warum auch einfach, wenn es umständlich geht."  
              
            wenn myTable = "der bereits erwähnte HTML-Code" ist, dann ist da nur ein Item drin. Der String.  
              
            
            > Der Code wird dann irgendwo in der Seite eingefügt.  
              
            Ja. Und genau dann gibt es im DOM das Objekt (Element) mit der ID "t2".  
            removeChild ist dann auch eine typische Methode eines Elements (Objektes) des DOM. Willst du vor dem Einfügen den Quelltext für die Tabelle aus dem String entfernen, dann bediene Dich geeigneter Methoden die für Strings gelten.  
              
            [Jörg Reinholz](http://www.fastix.org)
            
  3. Om nah hoo pez nyeetz, CandlesMan!

    <table id="t1">
    <tr>
              <td>
                <table id="t2">
          <tr><td></td></tr>
                </table>
              </td>
            </tr>
      </table>

      
    Wenn das kein Testdokument ist:  
    - bist du sicher, dass du verschachtelte Tabellen brauchst?  
    - würde ein Unsichtbarmachen mithilfe von CSS reichen?  
      
    Matthias
    
    -- 
    Der Unterschied zwischen Java und JavaScript ist größer als der zwischen [Rad und Radar](http://selfhtml.apsel-mv.de/java-javascript/index.php?buchstabe=R#rad).  
    ![](http://www.billiger-im-urlaub.de/kreis_sw.gif)