Yasko: Objektname dynamisch ermitteln

Ich habe folgendes Problem:

Ich muss in einem Java-Script unterschiedliche Aktionen mit einem Feld durchführen. An dieses Script wird eine 2-stellig Feldnummer übergeben. Aufgrund dieser Feldnummer wird der Feldname ermittelt mit dem gearbeitet werden muss - z.B. so:

function UpperKund(feld){
feldxx="";
feldxx.name="document.REPORTREQ.RRKDNR" +feld;
neu=feldxx.value.toUpperCase();
alert (neu);
}

Der Browser (IE) bringt mir aber immer den Fehler "feldxx.value ist null oder kein Objekt"

Was ist an dieser Syntax falsch?

Danke für eure Hilfe

  1. Liebe(r) Yasko,

    function UpperKund(feld){
    feldxx="";
    feldxx.name="document.REPORTREQ.RRKDNR" +feld;
    neu=feldxx.value.toUpperCase();
    alert (neu);
    }

    Du definierst "feldxx" absichtlich als globale Variable?

    Du definierst "feldxx" global als String. Dann gibst Du dem String eine Eigenschaft "name". Dann möchtest Du für eine globale Variable "neu" plötzlich die Eigenschaft "value" von "feldxx" haben. Wo soll die denn her kommen?

    Der Browser (IE) bringt mir aber immer den Fehler "feldxx.value ist null oder kein Objekt"

    Der Browser IE eignet sich absolut nicht um solche Dinge zu entwickeln. Ich empfehle Dir dringend den Firefox, da der in seiner Javascript-Konsole wunderbar aussagekräftige Fehlermeldungen hat. Ausserdem kannst Du ihn mit den Developer-Tools installieren, dann steht Dir auch gleich noch der Mächtige DOM-Inspector zur Verfügung.

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    1. »» Liebe(r) Yasko,
      »»
      »» »» function UpperKund(feld){
      »» »» feldxx="";
      »» »» feldxx.name="document.REPORTREQ.RRKDNR" +feld;
      »» »» neu=feldxx.value.toUpperCase();
      »» »» alert (neu);
      »» »» }
      »» Du definierst "feldxx" absichtlich als globale Variable?
      »»
      »» Du definierst "feldxx" global als String. Dann gibst Du dem String eine Eigenschaft "name". Dann möchtest Du für eine globale Variable "neu" plötzlich die Eigenschaft "value" von "feldxx" haben. Wo soll die denn her kommen?
      »»

      Das Ganze ist ein - vielleicht etwas hiflloser - Versuch das Feld RRKDNR05 im Form REPORTREQ auf gross zu stellen, wenn im Parameter "05" hereinkommt.

      Wie funktioniert das?

      PS: Der Hinweis auf den FireFox ist gut - aber nur teilweise brauchbar (die optische Darstellung zwischen IE und FireFox unterscheidet sich z.T. erheblich - und für dieses Projekt ist von Firmenseite als Browser IE vorgeschrieben).

      1. Das Ganze ist ein - vielleicht etwas hiflloser - Versuch das Feld RRKDNR05 im Form REPORTREQ auf gross zu stellen, wenn im Parameter "05" hereinkommt.

        Wie funktioniert das?

        wie gesagt du musst die Namen voll qualifiziert ansprechen.

        document.forms[....]
        in den eckigen Klammern darf stehen was du brauchst, z.b. eine Stringverknüpfung.

        PS: Der Hinweis auf den FireFox ist gut - aber nur teilweise brauchbar (die optische Darstellung zwischen IE und FireFox unterscheidet sich z.T. erheblich - und für dieses Projekt ist von Firmenseite als Browser IE vorgeschrieben).

        Naja, die optische Darstellung im IE läßt zu wünschen übrig stimmt.
        Aber auch bei der Umsetzung eins JS - vor allem wenn es Umfangreicher wird -sind die Fehlermeldungen darüber hinaus nicht brauchbar.

        Struppi.

        1. Hallo Struppi

          Kannst du mir bitte die Anweisung als Beispiel hier reinschreiben - ich finde weder eine Beschreibung wie ich Namen qualifiziert ansprechen kann, noch finde ich es durch Versuch und Irrtum heraus.

          Danke

          »» »» Das Ganze ist ein - vielleicht etwas hiflloser - Versuch das Feld RRKDNR05 im Form REPORTREQ auf gross zu stellen, wenn im Parameter "05" hereinkommt.
          »» »»
          »» »» Wie funktioniert das?
          »»
          »» wie gesagt du musst die Namen voll qualifiziert ansprechen.
          »»
          »» document.forms[....]
          »» in den eckigen Klammern darf stehen was du brauchst, z.b. eine Stringverknüpfung.
          »»
          »» »»
          »» »» PS: Der Hinweis auf den FireFox ist gut - aber nur teilweise brauchbar (die optische Darstellung zwischen IE und FireFox unterscheidet sich z.T. erheblich - und für dieses Projekt ist von Firmenseite als Browser IE vorgeschrieben).
          »»
          »» Naja, die optische Darstellung im IE läßt zu wünschen übrig stimmt.
          »» Aber auch bei der Umsetzung eins JS - vor allem wenn es Umfangreicher wird -sind die Fehlermeldungen darüber hinaus nicht brauchbar.
          »»
          »» Struppi.

          1. Kannst du mir bitte die Anweisung als Beispiel hier reinschreiben - ich finde weder eine Beschreibung wie ich Namen qualifiziert ansprechen kann, noch finde ich es durch Versuch und Irrtum heraus.

            z.b. so:

            var nr = 1;  
            var feld = document.forms['FormularName'].elements['element' + nr];  
            alert(feld.value);
            

            Bitte sinnvoll zitieren, damit man weiß woruaf du dich beziehst, kein Tofu!

            Struppi.

            1. Hallo Struppi

              Besten Dank - funktioniert!

      2. Lieber Yasko,

        Das Ganze ist ein - vielleicht etwas hiflloser - Versuch das Feld RRKDNR05 im Form REPORTREQ auf gross zu stellen, wenn im Parameter "05" hereinkommt.

        Das klingt so, als ob dahinter eine serverseitige Datenbank zur Auswertung kommt. In diesem Falle ist es sinnvoller, diese Manipulationen nicht auf der Clientseite zu tun, denn dort ist es nicht sicher (weil manipulierbar oder deaktivierbar). Der Server kann ja dann die Informationen entsprechend aufbereiten, bevor er sich an die Datenbank wendet.

        Liebe Grüße aus Ellwangen,

        Felix Riesterer.

        1. Hallo

          Du hast mit deiner Vermutung recht - auf der Datenbankseite werden diese Manipulationen sowieso auch durchgeführt.

          Es geht aber auch darum andere Felder in der Form zu manipulieren (für den Anwender sofort sichtbar) - z.B.:

          • wenn er die Kundennr. 01 ändert, muss der Kundenname 01 auf *blank gesetzt werden, usw.

          Da ich 30x die gleichen Feldkombinationen habe, möchte ich das ganze nicht 30x definieren.

          »» Lieber Yasko,
          »»
          »» »» Das Ganze ist ein - vielleicht etwas hiflloser - Versuch das Feld RRKDNR05 im Form REPORTREQ auf gross zu stellen, wenn im Parameter "05" hereinkommt.
          »» Das klingt so, als ob dahinter eine serverseitige Datenbank zur Auswertung kommt. In diesem Falle ist es sinnvoller, diese Manipulationen nicht auf der Clientseite zu tun, denn dort ist es nicht sicher (weil manipulierbar oder deaktivierbar). Der Server kann ja dann die Informationen entsprechend aufbereiten, bevor er sich an die Datenbank wendet.
          »»
          »» Liebe Grüße aus Ellwangen,
          »»
          »» Felix Riesterer.

  2. function UpperKund(feld){
    feldxx="";
    feldxx.name="document.REPORTREQ.RRKDNR" +feld;
    neu=feldxx.value.toUpperCase();
    alert (neu);
    }

    du suchst die Ausführliche schreibweise mit document.forms['FormularName'].elements['ElementName']

    Der Browser (IE) bringt mir aber immer den Fehler "feldxx.value ist null oder kein Objekt"

    Um JS zu entwickeln ist dies der denkbar schlechteste Browser mit den am wenigsten hilfreichen Fehlermeldungen.

    Struppi.