Andreas Schneider: daten strukturieren

Beitrag lesen

Hallo Bernhard,

Da Du bei 0 anfängst zu zählen, müsste es wohl i<punktzahl heissen.
Eigentlich würde ich lieber mit Eins anfangen, den eine Nullpunkt oder Element gibt es nicht.

Javascript fängt bei 0 an zu zählen, d.h. das erste Arrayelement ist _immer_ seiten[0]. Aber Du kannst natürlich auch die Schleife bei 1 anfangen lassen und musst dafür beim Arrayindex eins abziehen, um die die Elemente mit Index 0 bis Anzahl-1 anzusprechen. Letztendlich ist es egal, Hauptsache die _Anzahl_ der Arrayelemente stimmt.

seiten[seiteJ-1][punkt-1] = "Wert";
Finde ich ein bessere Alternative zur einer Schleife.

Nun, ja, warum eine Schleife durchlaufen, wenn man nur auf ein einziges Arrayelement zugreifen will.

Mittlerweile habe ich die Funktion etwas umgebaut:
seiten[seiteJ][punkt] = element;
Ohne "-1" denn ich möchte nicht mit Null anfangen. an diser Stelle bekomme ich leider ein Fehlermeldung:
Zeile:89
Zeichen:4
Fehler:Objekt erwartet

Was steht denn in Zeile 89? Ein Zugriff auf ein Arrayelement, dessen Index größer oder gleich der Anzahl der Arrayelemente ist?

Als Bsp.: Seite zwei, Punkt 3, Elemen 4:
seiten[2][3] = 4;

Also auf der Seit zwei erweitere das Array um die Dimension 3 und füge zur der Dimension den Wert 4

Ist denn seiten[2] ein Array?

An hier die Funktion:

Ok, sehen wir sie uns mal an.

...
var zahl_der_artikeln = "12";
var seiten = new Array(2);
function werte(element, id_nr, wert1, wert2, wert3, wert4){

var wochen_nr = "14";

Ist das keine Zahl? Wenn doch: Anführungszeichen sind zuviel.

var layout_wahl = "dateiname;

Hier fehlt das schliessende Anführungszeichen.

[...]
  var punkt = document.artikel.dot_position.value; // welchen Punkt auf der linke Seite hat der User grade angeklickt
  var seiteJ = document.artikel.gewaehlte_seite.value; //grade ausgewählte Seit in der Anzeigen
  var punktZahl = document.artikel.punkt_anzahl.value; // Die Anzahl der Punkte auf eine Seite

Ab hier ist der Array "seiten" und alles was damit hängt.

Dann nehmen wir doch zuerst mal die Kommentare raus:

// Ab hier ist der Array "seiten" und alles was damit hängt.
   for(var i=0; i<=punktZahl; i++){
    if(i==(seiteJ-1)){
     seiten[(seiteJ-1)] = new Array(i);
    }
   }

Du brauchst keine Schleife, wenn Du schon vorher den Index des Elements kennst, auf das Du zugreifen willst.

//seiten[seiteJ-1][punkt-1] = element;
   //seiten[seiteJ][punkt] = element;
   seiten[seiteJ][punkt] = element;

Da Du bei 1, Javascript aber bei 0 anfängt zu zählen, ist die erste Zeile richtig.

alert(seiten);
   for(var i=0; i<punktZahl; i++){
    if(i== (punkt-1)){
    //seiten[(seiteJ-1)][i] = new Array(element);
    seiten[(seiteJ-1)][i] = element;
    }
   }

s.o.

[...]
<form name="artikel" action="" method="POST">
  <script language=JavaScript>

Das sollte besser <script type="text/javascript"> heissen.

<!--
   var SeitenZahl = 2";

Das öffnende Anführungszeichen fehlt.

for(var i=1; i<=SeitenZahl; i++){
    document.write("<input type='button' id='s_"+i+"' value='"+i+"' style='width=25;'");
    document.write("OnClick="seiten_zahl("+i+")">\n");
   }
  //-->
  </script>

Warum machst Du das mit Javascript und nicht wie unten mit PHP?

<?
  for($i=1; $i<=12; $i++){
   ECHO "\t<input type='button' id='b_".$i."' name='".$i."' value='".$i."' style="width=25;" OnClick="button_farbe('".$i."');"><br>\n";
  }
  ?>
...

Ich bin ehrlich gesagt nicht so ganz sicher, was Du eigentlich bezweckst. Wenn ich den PHP-Teil durch Buttons ersetze, dann sehe ich mehrere Reihen mit Zahlen beschrifteter Buttons. Die Funktion Werte wird allerdings durch keinen davon aufgerufen.

Schreib nochmal ganz genau auf, wann, wo und wie oft der Aufruf erfolgt und was die Funktion genau machen soll, vielleicht kommen wir dann ja weiter.

Grüße
Andreas

--
Auch eine Reise über tausend Kilometer muß mit einem einzelnen Schritt beginnen.
Laotse "Taoteking"