Ernesto: auf mehrer ausgewähle Formelemente zugreifen.

Hallo,
ich will beim klicken auf ein checkbox mehrere elemente disablen bzw. enablen.
ich habe es so gemacht:
<form name="meinform">
<script type="text/javascript">
<!--
  function disab(wer,was){
    var x = document.meinform.elements;
    for (var i=0;i<x.length;i++)
    {
      if(x[i].id==was){x[i].disabled = !(wer.checked);}
    }
    }
// -->
</script>
Dieser checkbox müsste alle Elemente mit id="pr" enablen/disablen:

<input type="checkbox" name="check" onclick="disab(this,'pr');">

Alle Formelemente die betroffen werden, habe ich dann id="pr" gegeben.

<input type="text" id="pr" name="text1">
<select name="liste" id="pr">
...
</select>
<textarea name="langentext" id="pr">...</textarea>

restliche elemente werden nicht verändert.
</form>

Es funktioniert, müssten aber nicht mehrere Elemente mit der selbe ID geben.
Gibt es eine Art "dummy" Eingenschaft die ich benutzten könnte, statt ID?
Habe es mit "alt" probiert, doch funktioniert nur mit text, nicht mit select oder textarea.

  1. Hi,

    function disab(wer,was){
        var x = document.meinform.elements;
        for (var i=0;i<x.length;i++)
        {
          if(x[i].id==was){x[i].disabled = !(wer.checked);}

    wenn Du schon die ID übergibst, brauchst Du nicht alle Elemente zu überprüfen. document.getElementById() gibt Dir direkten Zugriff auf das Element. Fast so direkt, als hättest Du es an Stelle der ID übergeben. Maximal bleibt die Überprüfung, ob das Element überhaupt existiert oder nicht.

    Dieser checkbox müsste alle Elemente mit id="pr" enablen/disablen:

    Alle? "Das eine" meinst Du sicher. IDs müssen dokumentweit eindeutig sein.

    <input type="text" id="pr" name="text1">
    <select name="liste" id="pr">

    Das ist kein HTML.

    Gibt es eine Art "dummy" Eingenschaft die ich benutzten könnte, statt ID?

    Wenn Du Elemente klassifizieren möchtest, bietet sich das class-Attribut an.

    Habe es mit "alt" probiert,

    Die meisten Form-Controls sind immer darstellbar, benötigen also keinen Alternativinhalt.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Genau um das geht es.
      Ich will eine ca. 10 elemente von ca 20 mit einen klick enablen/disablen.
      ich will aber nicht jedes element extra abrufen.
      Wenn ich aber alle 10 die selbe ID vergeben (was nich zulässig ist) und dann alle elemente nach der ID abfrage, kann ich alle 10 elemente ändern. Wenn ich aber jeden der 10 elemente mit dummy='pr' und dann im script nach alle .dummy='pr' suche, müsste funktionieren. Tut aber nicht.
      Mit nicht dokumentenweit eindeutige id, geht.

      1. Hallo Ernesto!

        Mit nicht dokumentenweit eindeutige id, geht.

        Das ist aber nicht erlaubt, da eine ID genau ein Element sozusagen »identifiziert«. Wenn Du nicht gerade Mafioso bist, hast Du sicher nur ein Personalausweis oder? ;)

        Warum numerierst Du nicht die Elemente, auf die Du zugreifen willst, und gehst die dann in einer Schleife durch? Beispiel:

        <input type="text" id="pr_1" name="text1">
        <select name="liste" id="pr_2">
        ...
        </select>
        <textarea name="langentext" id="pr_10">...</textarea>

        for (i=1;i<=10;i++) {
            document.getElementById('pr_'+[i]).style.visibility="hidden";
          }

        Viele Grüße aus Frankfurt/Main,
        Patrick

        --

        _ - jenseits vom delirium - _
        [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
        Nichts ist unmöglich? Doch!
        Heute schon gegökt?
        1. Danke, ist eine gute lösung.

          Habe es auch mit id=pr1, pr2, etc ... und dann:

          if(x[i].id.indexOf('pr')==0){x[i].disabled = !(wer.checked);

          probiert und funktioniert auch und die ID sind eindeutig.

      2. Hi,

        ich will aber nicht jedes element extra abrufen.
        Wenn ich aber alle 10 die selbe ID vergeben (was nich zulässig ist) und dann alle elemente nach der ID abfrage, kann ich alle 10 elemente ändern. Wenn ich aber jeden der 10 elemente mit dummy='pr' und dann im script nach alle .dummy='pr' suche, müsste funktionieren. Tut aber nicht.

        Warum gibst du den Elementen die du ansprechen willst nich allen die selbe Klasse, wie dir vorhin schon empfohlen worden ist?
        Auf den Klassen-Namen kannst du dann im Javascript mit .className zugreifen.

        Mit nicht dokumentenweit eindeutige id, geht.

        Das waere dann eine Klasse.

        mfG,
        steckl