Calocybe: Verwendung von Objekten als Übergabewert bei Funktionen

Beitrag lesen

Hi!

( form name="form" )

Namen, die in JavaScript nachmal als Bezeichner vorkommen (form, name, usw.), sollte man besser verwmeiden, da sowas leicht zu Kollisionen fuehrt.

//Funktion
function test(objekt,index,txt)
{
document.form.objekt.options[index].text = txt;
}
//Aufruf
test(DropDown1,0,"Test");
Aber diese Art funktioniert in meiner Anwendung nicht.

Natuerlich nicht. Was ist denn DropDown1? Ein Objekt? Nein! Das Objekt waere document.form.DropDown1. Aber wenn Du nur DropDown1 schreibst, dann ist das... gar nichts! Eine undefinierte Variable, die zu 0 oder undefined ausgewertet wird..

Was funktioniert wäre z.B.
//Funktion
function test(objekt,index,txt)
{
objekt.DropDown1.options[index].text = txt;
}

//Aufruf
test(document.form,0,"Test");

Genau, denn hier hast Du ja ein handfestes Objekt, naemlich document.form, welches Dein Formular repraesentiert. Und dieses Objekt hat tatsaechlich eine Eigenschaft namens DropDown1. (Betrachtet man es theoretisch, ist es eigentlich keine Eigenschaft, sondern eine Assoziation, aber das ist jetzt mal nicht wichtig.)

Was auch noch geht:

function test(objekt,index,txt) {
    objekt.options[index].text = txt;
}

test(document.form.DropDown1, 0, "Test");

Calocybe