+ Antworten
Ergebnis 1 bis 5 von 5

Thema: Löschen von Elementen funktioniert nur mit Variante 1

  1. #1
    clshtml ist offline Grünschnabel clshtml befindet sich auf einem aufstrebenden Ast
    registriert
    03-09-2008
    Beiträge
    6

    Löschen von Elementen funktioniert nur mit Variante 1

    Hallo,
    ich will mit JavaScript mehrere CheckBoxen in einer Form/div löschen.
    Für die Fehlersuche (Fehler: Objekt erforderlich) habe ich zwei Varianten erstellen. In der ersten Variante werden die CheckBoxen mit dem Laden der Seite erzeugt. Ein Klick auf den Button Löschen löscht wie gewünscht alle CheckBoxen.
    In der zweiten Variante werden die CheckBoxen mit JavaScript erzeugt (Button neuer Eintrag). Nach einem Klick auf den Button Löschen wird die Fehlermeldung "Objekt erforderlich" angezeigt.
    Form-Name und div-Namen sind in beiden Varianten gleich. Der Unterschied liegt nur im Erzeugen der CheckBoxen. Offensichtlich werden die CheckBoxen mit JavaScript anders "abgelegt", so dass beim Löschen die Knoten nicht stimmen.
    Hat jemand eine Lösung von euch, damit auch Variante zwei funktioniert?

    Steffan




    VARIANTE 1
    <body>
    <input type="button" name="btnLöschen" value="Löschen"
    onclick="loeschen();">

    <br><br>

    <form action="main.php" name="Schraube" method="post" style="font:0.8em Verdana; color:#708090;
    height:350px; width:250px; background:#E7E7E7; margin-left:10px; padding:5px; overflow:hidden; float:left">
    <div style="width:100%; height:88%; overflow:auto; margin-top:5px">
    <div id="Schrauben" style="width:200%">
    <input type="checkbox" name="SchraubeX" value="0"> Eintrag1 <br>
    <input type="checkbox" name="SchraubeX" value="0"> Eintrag2 <br>
    <input type="checkbox" name="SchraubeX" value="0"> Eintrag3 <br>
    <input type="checkbox" name="SchraubeX" value="0"> Eintrag4 <br>
    <input type="checkbox" name="SchraubeX" value="0"> Eintrag5 <br>
    </div>
    </div>
    </form>

    <script type="text/javascript">
    function loeschen() {
    for (var j=document.Schraube.elements.length-1; j>=0; j--) {
    if(document.Schraube.elements[j].type == 'checkbox') {
    var node01 = document.getElementById('Schrauben');
    var node02 = document.getElementById(document.Schraube.elements[j].name);
    var node03 = document.getElementById(document.Schraube.elements[j].name).nextSibling;
    node01.removeChild(node02);
    node01.removeChild(node03);

    }
    }
    }
    </script>
    </body>


    VARIANTE 2
    <body>
    <input type="button" name="btnLöschen" value="Löschen" onclick="loeschen();">
    <input type="button" name="btnNeu" value="neuer Eintrag" onclick="neueEintraege();">

    <br><br>

    <form action="main.php" name="Schraube" method="post" style="font:0.8em Verdana; color:#708090;
    height:350px; width:250px; background:#E7E7E7; margin-left:10px; padding:5px; overflow:hidden; float:left">
    <div style="width:100%; height:88%; overflow:auto; margin-top:5px">
    <div id="Schrauben" style="width:200%">
    </div>
    </div>
    </form>

    <script type="text/javascript">
    function loeschen() {
    for (var j=document.Schraube.elements.length-1; j>=0; j--) {
    if(document.Schraube.elements[j].type == 'checkbox') {
    var node01 = document.getElementById('Schrauben');
    var node02 = document.getElementById(document.Schraube.elements[j].name);
    var node03 = document.getElementById(document.Schraube.elements[j].name).nextSibling;
    node01.removeChild(node02);
    node01.removeChild(node03);
    }
    }
    }


    function neueEintraege() {
    for (var i=0; i<6; i++){
    //---------- CheckBox erzeugen ----------
    var objCheckBox = document.createElement("input");
    objCheckBox.type = "checkbox";
    objCheckBox.name = "SchraubeX";
    objCheckBox.value = "0";
    document.getElementById('Schrauben').appendChild(objCheckBox);

    //---------- Bezeichnung für die CheckBox erzeugen ----------
    var strCheckBoxText = document.createTextNode('Schraube ' + i);
    document.getElementById('Schrauben').appendChild(strCheckBoxText);

    //---------- Zeilenumbruch ----------
    var objBr = document.createElement("br");
    document.getElementById('Schrauben').appendChild(objBr);
    }
    }
    </script>
    </body>

  2.    Empfehlenswerte Literatur von unserem Partner Terrashop

    Das AJAX Kompendium jetzt 84% Rabatt
    Ajax - der Technologiemix aus JavaScript und XML - ist eines der Kernstücke professioneller Web 2.0-Programmierung. Dieses Buch führt Sie auf über 800 Seiten(!) von den ersten JavaScript-Codezeilen bis zur Entwicklung mit Ajax-Frameworks.

    Preis: früher: 49,95€ - jetzt nur: 7,95€

    Hier geht es direkt zum Buch

    Über 1.000 weitere IT-Bücher zum Sonderpreis lieferbar!

  3. #2
    hesst ist offline Foren-Gott hesst befindet sich auf einem aufstrebenden Ast
    registriert
    19-05-2008
    Beiträge
    2.943

    AW: Löschen von Elementen funktioniert nur mit Variante 1

    Variante 1 soll gehen? Kann nicht sein.
    du machst in beiden Fällen ein document.getElementById(document.Schraube.elements[j].name);
    Der name ist immer (IDs müssen eindeutig sein) SchraubeX. Diese ID wird aber nie vergeben.

  4. #3
    cybaer ist offline Kaiser cybaer befindet sich auf einem aufstrebenden Ast
    registriert
    12-09-2006
    Beiträge
    1.335

    AW: Löschen von Elementen funktioniert nur mit Variante 1

    Zitat Zitat von hesst Beitrag anzeigen
    Variante 1 soll gehen? Kann nicht sein.
    Ein übler Bug: Im IE bis einschl. V7 (und eventuell auch mom. noch im Opera, der den IE aus Kompatibilitätsgründen nachäfft), teilen sich IDs und NAMEs den selben Namespace.

    Ab V8 wird sich das ändern (und Opera überlegt auch ernsthaft, das MS-DOM zu entsorgen).
    Gruß, Cybaer

  5. #4
    hesst ist offline Foren-Gott hesst befindet sich auf einem aufstrebenden Ast
    registriert
    19-05-2008
    Beiträge
    2.943

    AW: Löschen von Elementen funktioniert nur mit Variante 1

    Zitat Zitat von cybaer Beitrag anzeigen
    Ein übler Bug: Im IE bis einschl. V7 (und eventuell auch mom. noch im Opera, der den IE aus Kompatibilitätsgründen nachäfft), teilen sich IDs und NAMEs den selben Namespace.

    Ab V8 wird sich das ändern (und Opera überlegt auch ernsthaft, das MS-DOM zu entsorgen).
    Wenn ich also eine ID "X" und einen/mehrere Namen "X" habe, kann es mir im IE passieren, ich finde bei getElementById("X") das/ein Element mit dem Namen "X"?

  6. #5
    cybaer ist offline Kaiser cybaer befindet sich auf einem aufstrebenden Ast
    registriert
    12-09-2006
    Beiträge
    1.335

    AW: Löschen von Elementen funktioniert nur mit Variante 1

    Ja, u.a. auch das.
    Gruß, Cybaer

+ Antworten

Ähnliche Themen

  1. CSS DropDown Menü funktioniert nur in Opera
    Von cyberkuh im Forum CSS und (X)HTML
    Antworten: 1
    Letzter Beitrag: 02-02-2008, 20:46
  2. Antworten: 21
    Letzter Beitrag: 08-08-2007, 01:04
  3. Vor dem löschen bestätigen
    Von CK2K2 im Forum JavaScript
    Antworten: 7
    Letzter Beitrag: 25-01-2007, 14:34
  4. MS-IExplorer - Verlauf komplett löschen
    Von gitiai im Forum Windows
    Antworten: 22
    Letzter Beitrag: 20-07-2003, 13:22
  5. Textarea der sich im browser nicht löschen lässt!
    Von Bigman007 im Forum JavaScript
    Antworten: 2
    Letzter Beitrag: 18-02-2003, 15:32

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein