bernhard.s: daten strukturieren

Beitrag lesen

Hallo Andreas,

danke für die Erkeleerung, jetzt weis ich wie ein Array unter JavaScript funktioniert :-)

for(var i=0; i<=punktZahl; i++){
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.

Auch hier erzeugst Du wieder ein neues, leeres Array, anstatt das vorhandene z.B. so
seiten[(seiteJ-1)][i] = "Wert";
mit Werten zu füllen.

Ausserdem hast Du hier eine unnötige Schleife über alle Punkte, obwohl Du nur ein einziges Arrayelement füllst.
Nehmen wir wieder an, Du hast 4 Punkte auf der Seite und punkt ist gleich 2. Dann passiert folgendes:

  1. Durchlauf, i=0 -> (punkt-1) ist ungleich i, nichts passiert
  2. Durchlauf, i=1 -> (punkt-1) ist gleich i, ein neues Array wird erzeugt
  3. Durchlauf, i=2 -> (punkt-1) ist ungleich i, nichts passiert
  4. Durchlauf, i=3 -> (punkt-1) ist ungleich i, nichts passiert
    Da Du aber schon vorher weisst, auf welches Arrayelement Du zugreifen willst, kannst Du Dir die Schleife sparen und gleich schreiben:

Diese Erklärung hat mir gefehlt.

seiten[seiteJ-1][punkt-1] = "Wert";

Finde ich ein bessere Alternative zur einer Schleife.

Die runden Klammern um seiteJ-1 sind hier übrigens nicht notwendig.

Danke für den Tipp :-)

In dem von User grade ausgewählten Punkt möchte ich den Elementnummer "element" speichern, leider wird er bei jedem neu gewählten Punkt überschrieben.
Was hältst Du von diese Methode?

Es wäre vielleicht am besten, wenn Du das Ganze mal hochladen und hier verlinken würdest, damit man es sich mal ansehen kann.

Sorry, es ist nicht möglich denn es läuft auf einem lokalem Rechner :-( Ich kann höchstens die gesamte Funktion hoch laden.

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
Code:0
URL:...

Also es hängt mit dem Aufbau oder mit der Erweiterung des Array "seiten", also vor der Funktion definiere ich das Array "seiten" und mache eine Vorbelegung mit vier:
var seiten = new Array(4); // Anzahl der Seiten
function werte(element){
 var punkt = document.form1.punkt_position.value;   // Punkt, den der User grade ausgewählt hat
 var seiteJ = document.form1.gewaehlte_seite.value; // gerade ausgewählte Seite
 var punktZahl = document.form1.punkt_anzahl.value; // die Anzahl der Punkt auf eine Seite

In der Funktion bekomme ich die Variablen "punkt" und "seiteJ", die ich zum erweitern des Array "seiten" in der Funktion benutze:

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

Stimmt das was ich geschrieben habe? JavaScript erlaubt eigentlich eine beliebige Erweiterung von Array für "3" konnte auch "155" stehen es sollte eingetlich kein Fehler kommen!

Grüße Bernhard

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

var wochen_nr = "14";
 var layout_wahl = "dateiname;

if(document.artikel.dot_position.value != ""){

for(var i=1; i<=zahl_der_artikeln; i++){
   if(element == i){
    document.getElementById("bgc_"+element).style.backgroundColor= "#99CC33";
    document.getElementById("position_nr_"+element).innerHTML = element;
   } else {
    document.getElementById("bgc_"+i).style.backgroundColor= "#FFFFFF";
    document.getElementById("position_nr_"+i).innerHTML = "";
   }
  }

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 gesammelte_werte = new Array(punkt, id_nr, wert1, wert2, wert3, wert4, wochen_nr, layout_wahl, zahl_der_artikeln, seiteJ);
  parent.dot_content.ausgabe_content(gesammelte_werte);

parent.top.head.location.href = "oben.php?WEITER=<%=session_id()%>&tabelle_layout=ja&main_id="+id_nr+"&week="+wochen_nr+"&page="+seiteJ+"&field="+punkt+"&layout="+layout_wahl;
  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.
  */
   /*
   for(var i=0; i<=punktZahl; i++){
    if(i==(seiteJ-1)){
     seiten[(seiteJ-1)] = new Array(i);
    }
   }*/
   //seiten[seiteJ-1][punkt-1] = element;
   //seiten[seiteJ][punkt] = element;
   /*
   seiten[seiteJ][punkt] = element;
   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;
    }
   }
   */
   var aus="";
   /*
   for(var i=1; i<=seiten.length; i++){
    aus += seiten[0][i]+", "+seiten[i]+"\n";
   }*/
   /*
   for (var i=1; i<=seiten.length; i++)
   {
    //if(seiten[i].length){
     for (var j=1; j<=seiten[i].length; j++)
     {
     //aus += seiten[i][j] + " ";
     aus += i+", "+j+ " ";
     // Das Leerzeichen dient zum Trennen der Werte
     }
    //}
    }
   */
   //alert(seiten.length+"\n\n"+seiten+"\n\n"+seiten[seiteJ-1][punkt-1]+"\n\n"+aus);

} else {
  alert("Fehler, bitte ein Punkt wählen.");
 }
}
...
<form name="artikel" action="" method="POST">
<input type="hidden" name="dot_position" value="">
<input type="hidden" name="gewaehlte_seite" value="">
<input type="hidden" name="punkt_anzahl" value="">

<table border="0" CELLSPACING="0" CELLPADDING="0" class="dot_frame_navi">
 <tr>
  <td colspan="3" height="30" valign="top">
  <script language=JavaScript>
  <!--
   var SeitenZahl = 2";
   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>
   
  </td>
 </tr>
 <tr>
  <td colspan="3" height="10" valign="center">
  <div style="width:100%; height:0; left:0; background-color:#000000;"><IMG SRC="../images/pixel.GIF" BORDER="0" width="2" height="1"></div>
  </td>
 </tr>
 <tr>
  <td rowspan="12>" valign="top">
  <?
  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";
  }
  ?>
  </td>
  <td rowspan="<%=count($row_main)%>"> </td>
  <td>
<?
...