Funktionsparameter in Variable einbauen.

Tim C.

Erfahrenes Mitglied
Einen wunderschönen guten Morgen.

Auch heute habe ich mal wieder eine, wohl ziemlich einfache JS Frage, aber ich versteh mal wieder nicht, was der von mir will ;)

Also folgende Situation. Ich habe ein Funktion, der bei Aufruf via onClick="... ein Parameter übergeben wird. Soweit kein Problem. Jetzt möchte ich aber eine Variable definieren, die neben einem festen String auch den Parameter enthält, da dies dann der Name eines Formularelements ist, das ich aktivieren möchte.

Hier mal die Funktion
Code:
function enable(ctrl) {
    //document.write(ctrl) <- würde auch korrekt ausgegeben.
    var foo;
    foo = "liste"+ctrl;
    if(document.formular.zwei.checked) {
        document.formular.foo.disabled = false;
        }
    else {
        document.formular.foo.disabled = true;
        }
    }
Wenn ich das aber so aufrufe, dann meldet mir der IE als Fehler.
document.formular.foo ist Null oder kein Objekt.

So Jungs (und Mädels ?) klärt mich emsigen Javascript Idioten mal auf :p
 
Zuletzt bearbeitet:
Moin :-)

JS sucht bei dir ein Element namens "foo" ...und nicht ein Element mit dem Namen,den du in [foo] gespeichert hast.

Machs z.B. mit
Code:
document.formular.elements(foo).........
 
Aber wie gehe ich das ganze jetzt an, wenn ich den formularnamen auch noch, per Komma getrennt, als Argument der Funktion übergebe ? Da macht ja elements wenig Sinn und geht auch nicht .

All meine Versuche das selbst zu lösen schlagen irgendwie fehl ;)
 
Original geschrieben von Tim Comanns
Aber wie gehe ich das ganze jetzt an, wenn ich den formularnamen auch noch, per Komma getrennt, als Argument der Funktion übergebe ? Da macht ja elements wenig Sinn und geht auch nicht .

Dann gehen wir im DOM-Baum eine Ebene höher :) Versuche:
Code:
document.forms[FormularName].elements[foo]....
wobei "FormularName" der zweite Parameter der Funktion ist...

bye
 
:-)
man kann nicht immer erster sein....

....als Klammern solttest du aber besser die runden nehmen.....ich glaub, nicht-IE-Browser mögen die Eckigen dort nicht.....kann mich aber auch irren.

<edit>:-( Ooops....Kommando zurück.....genau umgekehrt,es müssen die eckigen sein :-)ich verwechsel das immer
</edit>
 
Zuletzt bearbeitet:
Ob eckig ob rund...Fakt ist
Code:
function enable(formname,element) {
    var checkbox;
    var object2enable;
    checkbox = "leader"+element+"_enable";
    object2enable = "leader"+element+"_id";
    if(document.forms[formname].elements[checkbox].checked) {
        document.forms[formname].elements[object2enable].disabled = false;
    }
    else {
        document.forms[formname].elements[object2enable].disabled = true;
    }
}
Liefert bei mir beim Aufruf "Fehler: 'document.forms[...].elements' ist Null oder kein Objekt". Irgendwie mag ich Javascript immer mehr *hust* ;)
 
Hast du beim Aufruf der Funktion die Parameter in " geschrieben? Der Fehler hört sich dannach an, als ob du das vergessen hast... Folgendes Beispiel funktioniert einwandfrei unter IE und Mozilla
Code:
<html>
<head>
    <script type="text/javascript">
        function test(formname,element){
           document.forms[formname].elements['bar'+element].value = 'funktioniert';
        }
    </script>
</head>
<body onload="test('foo','1')">
  <form name="foo">
    <input type="text" name="bar1">
  </form>
</body>
</html>

bye
 

Neue Beiträge

Zurück