Christian: Variable in Formelementnamen

Hallo,

ich habe eine variable Anzahl an Textfeldern, deren Namen sich in einer (eindeutigen, aber nicht zwangsläufig fortlaufenden) Zahl (id) am Ende unterscheiden.
Diese sollen nun mit einer javascript-funktion dis(/en-)abled werden können.

Die ids lasse ich von php in ein JS-Array schreiben.

<script type="text/javascript">
<?php
echo 'var ids = new Array("'.implode('","',$ids).'");';
?>

function newobj_von_eur_uncheck() {
 for(var i=0; i<ids.length; i++) {
  document.newobjs.newobj_von_eur_ + ids[i] + .disabled=true;
 }
}

und wie ich das ids[i] da nun in den formelementnamen bekomme, ist das problem.

Die selfhtml-suche lieferte mir diesen Thread: http://forum.de.selfhtml.org/archiv/2003/3/t40702/#m222920
Aber der hilft mir nicht weiter, da das Problem für meine Kenntnisse nicht ähnlich genug ist oder wirklich nicht passt.

Gute Nacht,
Christian

  1. Hallo,

    for(var i=0; i<ids.length; i++) {
      document.newobjs.newobj_von_eur_ + ids[i] + .disabled=true;
    }

    und wie ich das ids[i] da nun in den formelementnamen bekomme, ist das problem.

    Die selfhtml-suche lieferte mir diesen Thread: http://forum.de.selfhtml.org/archiv/2003/3/t40702/#m222920
    Aber der hilft mir nicht weiter, da das Problem für meine Kenntnisse nicht ähnlich genug ist oder wirklich nicht passt.

    Hm, dort wird genau das Problem behandelt.

    for(var i=0; i<ids.length; i++) {

    document.newobjs.elements["newobj_von_eur_" + ids[i]].disabled=true;

    }

    oder noch ausführlicher

    for(var i=0; i<ids.length; i++) {

    document.forms["newobjs"].elements["newobj_von_eur_" + ids[i]].disabled=true;

    }

    Siehe auch http://de.selfhtml.org/javascript/objekte/elements.htm#allgemeines.

    viele Grüße

    Axel

    1. Hallo Axel,

      Hm, dort wird genau das Problem behandelt.

      ja... aber es klappte einfach nicht! :/

      oder noch ausführlicher

      nur diese variante funktioniert! Darauf muss man erstmal kommen, dass man das "newobjs" nicht einfach so hinschreiben darf, obwohl es gar nicht variabel ist. Danke dafür!

      Grüße
      Christian

      1. Hallo,

        oder noch ausführlicher

        nur diese variante funktioniert! Darauf muss man erstmal kommen, dass man das "newobjs" nicht einfach so hinschreiben darf, obwohl es gar nicht variabel ist. Danke dafür!

        Dann gibt es da eine Namens- oder Namensraumüberschneidung. Das Bedeutet, dass noch irgendwas, außer Deinem FORM, den Namen "newobjs" hat. Dann käme es zum Konflikt zwischen document.forms["newobjs"] und document.images["newobjs"] oder document.all["newobjs"], was alles abgekürzt document.newobjs wäre.

        viele Grüße

        Axel