Erik: Array dynamisch mit Objekten füllen

Hallo,

ich habe folgendes Problem. Mit Hilfe von ASP Script baue ich eine dynamische Anzahl von Eingabefeldern auf. Dabei unterscheiden sich die Felder dadruch, dass der Name sich jeweils vom Vorgänger durch ein zusätzliches I unterscheidet, alos NameI, NameII, NameIII usw.

Mit Hilfe von Javascript möchte ich nun die Eingabe für diese Felder überprüfen. Die Anzahl der Felder habe ich in einem Feld Names Zaehler.

function checkformular()
{
myArray new Array(documents.forms[0].Zaehler.value)
for ( var i = 1; i < documents.forms[0].Zaehler.value; i++){}
  myArray[i] = new Array(document.forms[0].ZeileI.value,
               document.forms[0].ZeileI.value, document.forms[
               [0].ZeileII.value, document.forms[0].ZeileIII.value)
for ( var i = 1; i < document.forms[0].Zaehler.value ; i++){
   if ((myArray[i] != "") && (myArray[i] != "Tach auch")) {
     suche = /\d\d.\d\d.\d\d\d\d/;
     if (!(suche.test(myArray[i]))) {
alert("Datum im Format dd.mm.jjjj angeben!");    
return false;}
if (CheckDate(myArray[i]) == false) {
   alert("Datum im Format dd.mm.jjjj angeben!");    
   return false;}
}
     }
return true; }

Meine Frage ist nun, wie kann ich das Array (Zeile 5 -7) dynamich mit der meinen Objeketen Füllen???

Danke
Erik

  1. Hi Erik,

    ich denke ich könnte dir da helfen. Ich denke da an den "eval()" Befehl. Erst einmal müsstest du den Befehl "als String" zusammenbasteln, etwa so:

    var arrayString = "myArray[i] = (";

    /* so, jetzt werden deine Items z.B. über eine Schleife
         eingefügt... ca. so:

    "Zeile" + "I" + ".value"  <-- usw. ich denke
                                       das sollte sich
                                       dynamisch
                                       lösen lassen

    Der fertige String sollte dann exakt wie der Befehl
         aussehen, z.B: 'myArray[i] = ("item1", "item2");'

    */

    eval(arrayString);

    /* mit diesem Befehl wird der String arrayString als
         Befehl interpretiert */

    Das sollte etwa so funktionieren. Das ist natürlich jetzt keine vollständige Lösung, aber ich hoffe, es hilft Dir weiter.

    Gruß
    Thomas J.
    [mailto:t.jaworski@finec.de]

  2. Hi Erik.

    Meine Frage ist nun, wie kann ich das Array (Zeile 5 -7) dynamich mit der meinen Objeketen Füllen???

    Meine neugierige Gegenfrage: Hast Du es schon mal mit den JS-Funktionen slice() und concat() probiert,
    nebst weiteren Array-Befehlen, die ab HTML 4.0 zur Verfügung stehen sollen? Ich wollte vor wenigen Tagen
    auch ein Array dynamisch beschreiben und habe es mit den o. g. Funktionen nicht geschafft, weil diese
    scheinbar nicht mit allen Browsern der 4er-Generation laufen... Oder aber in SelfHTML wurde eine falsche
    Angabe zu den Funktions-Übergabewerten gemacht :-?

    an die Grenzen stoßende Grüße
    Philip

    1. Hallo

      Meine neugierige Gegenfrage: Hast Du es schon mal mit den JS-Funktionen slice() und concat() probiert,

      Ist an dieser Stelle unangebracht, da ja nur weitere Elemente angehaengt werden sollen. Das geht besser mit

      array[array.length] = new_element;
      oder, falls Du einen JS1.2-faehigen Browser hast
      array.push(new_element)

      nebst weiteren Array-Befehlen, die ab HTML 4.0 zur Verfügung stehen sollen? Ich wollte vor wenigen Tagen
      auch ein Array dynamisch beschreiben und habe es mit den o. g. Funktionen nicht geschafft, weil diese
      scheinbar nicht mit allen Browsern der 4er-Generation laufen... Oder aber in SelfHTML wurde eine falsche
      Angabe zu den Funktions-Übergabewerten gemacht :-?

      Nun ja, Selfhtml ist an solchen Stellen tatsaechlich nicht sehr verlaesslich. Wie auch immer, slice(), splice() und concat() sind allesamt JS1.2-Methoden, und der IE4 kann nun mal nur JS1.1 (vollstaendig??).
      http://developer.netscape.com/docs/manuals/js/client/jsref/array.htm

      So lange

      1. Hey Calocybe,

        langsam beginnt mein Bildungsurlaub hier im SelfHTML-Forum Früchte zu tragen. Das Hotel buche ich
        nächste Saison wieder :o)

        bis demnächst
        Philip

        array[array.length] = new_element;
        oder, falls Du einen JS1.2-faehigen Browser hast
        array.push(new_element)

        Nun ja, Selfhtml ist an solchen Stellen tatsaechlich nicht sehr verlaesslich. Wie auch immer, slice(), splice() und concat() sind allesamt JS1.2-Methoden, und der IE4 kann nun mal nur JS1.1 (vollstaendig??).
        http://developer.netscape.com/docs/manuals/js/client/jsref/array.htm

        So lange