Christoph: markierter checkboxen, text-inhalt von di/input field löschen

hallo erstmal,

ich möchte anhand von markierten checkboxen, den text-inhalt eines divs und den value des input type="text" feldes löschen, evlt. mit (innerHtml = '')
leider fehlt mir hier der ansatz wie ich alle elemente einsammle und dann entsprechend löschen kann.

bsp:

<fom name="formular">
<table cellpadding="1" cellspacing="1" border="0" width="400">
<tr>
<td><input type="checkbox" name="delete"></td>
<td><input type="text" name="text_a" value="Text A"></td>
<td><div id="inhalt_a">Inhalt 1</div></td>
</tr>
<tr>
<td><input type="checkbox" name="delete"></td>
<td><input type="text" name="text_b" value="Text B"></td>
<td><div id="inhalt_b">Inhalt 2</div></td>
</tr>
</table>
<input tpye="button" onClick="delSelectedText()">
</form>

Mein erster Ansatz ist, daß ich mir erstmal alle Elemente einsammle die checked sind, und dann müßte ich definieren können, bei welchen elementen ich den inhalt löschen kann. blos wie?

<script type="text/javascript">
function delSelectedText() {
//alle elemente die checked sind
var el = document.getElementsByName('delete');
 for(i = 0;i<el.length;i++)
 if(el[i].checked)
 alert(el);
}
</script>

  1. Hallo,

    ich möchte anhand von markierten checkboxen, den text-inhalt eines divs und den value des input type="text" feldes löschen,
    bsp:

    <fom name="formular">
    <table cellpadding="1" cellspacing="1" border="0" width="400">
    <tr>
    <td><input type="checkbox" name="delete"></td>

    <td><input type="text" name="text_0" value="Text A"></td>
    <td><div id="inhalt_0">Inhalt 1</div></td>

    </tr>
    <tr>
    <td><input type="checkbox" name="delete"></td>

    <td><input type="text" name="text_1" value="Text B"></td>
    <td><div id="inhalt_1">Inhalt 2</div></td>

    </tr>
    </table>
    <input tpye="button" onClick="delSelectedText()">
    </form>

    Mein erster Ansatz ist, daß ich mir erstmal alle Elemente einsammle die checked sind, und dann müßte ich definieren können, bei welchen elementen ich den inhalt löschen kann. blos wie?

    function delSelectedText() {
     //alle Elemente im Formular "formular", die den Namen "delete" haben
     var el = document.forms["formular"].elements["delete"];
     for (i = 0;i<el.length;i++) {
      if (el[i].checked) {
         document.forms["formular"].elements["text_" + i].value = "";
         document.getElementById("inhalt_" + i).style.visibility = "hidden";
      }
     }
    }

    Wenn Du die IDs der DIVs und die Namen der Textfelder mit Name_0, Name_1, Name_2 ... bezeichnest, dann kann das i in der Schleife die Verbindung zwischen Checkbox und Textfeld bzw. DIV sein.

    Weiterhin würde ich den Inhalt des DIV-Elements nicht löschen, sondern nur unsichtbar machen.

    viele Grüße

    Axel

    1. » Wenn Du die IDs der DIVs und die Namen der Textfelder mit Name_0, Name_1, Name_2 ... bezeichnest, dann kann das i in der Schleife die Verbindung zwischen Checkbox und Textfeld bzw. DIV sein.

      Weiterhin würde ich den Inhalt des DIV-Elements nicht löschen, sondern nur unsichtbar machen.

      viele Grüße

      Axel

      Hallo Axel,

      besten Dank erstal für deine schnelle Hilfe.
      Leider bekomme ich eine NULL-Fehlermeldung von:
       var el = document.forms["formular"].elements["delete"];

      Gruß
      Christoph

      1. Hallo,

        Leider bekomme ich eine NULL-Fehlermeldung von:
         var el = document.forms["formular"].elements["delete"];

        Ich nicht.

        Kontrolliere Deinen Quelltext nochmal. Wenn der im Ausgangsposting der ist, mit dem Du arbeitest, dann hast Du kein Formular, weil
        <fom name="formular">
        kein Formular erzeugt.

        viele Grüße

        Axel

        1. <fom name="formular">
          kein Formular erzeugt.

          viele Grüße

          Axel

          da hast du natürlich recht, hatte ich schon bemerkt, nur dann kommt gar kein fehler und es passsiert nichts.
          wenn ich das element mit alert(el); ausgeben, dann bekomm ich auch einen null-fehler....

          wenn ich aber es wie folgt schreibe:

          var el = document.getElementsByName("delete");

          for (i = 0;i<el.length;i++) {
            if (el[i].checked) {
          document.getElementsByName("tabTitle_" + i).value = "";
          document.getElementById("inhalt_" + i).style.visibility = "hidden";
            }
           }
          }

          so läuft es zwar, nur fehlt mir hier noch das löschen vom outerHTML des input fields und ab und zu erhalte ich einen laufzeitfehler auf das getElementById....

          gruß
          christoph

          1. Hallo,

            da hast du natürlich recht, hatte ich schon bemerkt, nur dann kommt gar kein fehler und es passsiert nichts.

            Bei mir nicht.

            wenn ich das element mit alert(el); ausgeben, dann bekomm ich auch einen null-fehler....

            ?
            Dann hast Du einen anderen Code als ich. Den müsste man nochmal sehen, um helfen zu können.

            wenn ich aber es wie folgt schreibe:

            var el = document.getElementsByName("delete");

            Das ergibt ein Array mit allen Elementen des _gesamten_ Dokuments, die den Namen "delete" haben. Das ist langsamer als

            var el = document.forms["formular"].elements["delete"];

            was ein Array aller Formularelemente mit dem Namen "delete" im Formular mit dem Namen "formular" ergibt.

            for (i = 0;i<el.length;i++) {
              if (el[i].checked) {
            document.getElementsByName("tabTitle_" + i).value = "";
            document.getElementById("inhalt_" + i).style.visibility = "hidden";
              }
             }
            }

            so läuft es zwar, nur fehlt mir hier noch das löschen vom outerHTML des input fields

            Bitte? Beschreibe bitte genauer, was Du willst.

            und ab und zu erhalte ich einen laufzeitfehler auf das getElementById....

            Dann gibt es das Element mit der ID "inhalt_[Nr]" nicht. Du musst die entsprechenden Elemente schon anlegen.

          2. hallo axel,

            großes danke an dich.
            ich dödel hatte nen proxy eingestellt, der mir meine form-daten verändert hatte.

            gruß
            christoph und schönes wochenende vorab