Hallo Bernhard,
heute im laufe des Tages musste das "Anzeigen der Elemente" gelöst werden. Dieses Mal bin ich an das Problem von ganz andere Seite dran gegangen ohne Array ohne große Aufwand.
Hauptsache, es hat geklappt :-)
JavaScript hat natürlich den unschlagbaren Vorteil, das bei jeder Kleinigkeit die Seite nicht jedes Mal neu geladen werden muss :-)
Stimmt, aber auch den Nachteil, dass es nicht von jedem Client verstanden wird.
Fangen wir mal mit dem Array an. Du hast mehrere Seiten, jede Seite hat mehrere Punkte und jeder Punkt mehrere Elemente.
Stop, bis zur dem Punkt stimmt, dh. jeder Seite hat mehrere Punkte aber jeder Punkt kann nur ein Element haben.
Ok, das habe ich dann falsch verstanden.
[...] oder es komplett in der Variante mit Arrays lösen möchtest [...]
Nein, warum? Um so besser, wenn es auch einfacher geht.
for(var i=1; i<=zahl_der_artikeln; i++){ // Zahl der Elemnte
[...]
Die nächsten beiden Schleifen kannst Du Dir sparen, denn Du tust ja nur etwas, wenn der Schleifenzähler gleich einer vorgegebenen Zahl ist. D.h., Du entfernst die nächsten 4 Zeilen (und die zugehörigen "}") und ersetzt in den folgenden Zeilen j durch seiteJ bzw. k durch punkt.
for(var j=1; j<=<%=$seiten%>; j++){ // Seitenzahl
if(j==seiteJ){
for(var k=1; k<=<%=$punkt_max%>; k++){ // Max. Zahl der Punkt auf der linke Seite
if(k==punkt){if(element == i){
document.getElementById("bgc_"+element).style.backgroundColor= "#99CC33";
document.getElementById("SEITEseite_"+j+"_punkt_"+k+"_element_"+i).innerHTML = seiteJ+"<br>";
document.getElementById("ELEMENTseite_"+j+"_punkt_"+k+"_element_"+i).innerHTML = punkt;
} else {
// Zuständig für das -löschen- der Zahlen beim angewähltem Punkt, dh. der User hat den Punkt 2 gewählt
// und schaltent zwischen den Elemnten, es wird nur der letzt ausgewählte Elment gespeichert.
document.getElementById("bgc_"+i).style.backgroundColor= "#FFFFFF";
document.getElementById("SEITEseite_"+j+"_punkt_"+k+"_element_"+i).innerHTML = "";
document.getElementById("ELEMENTseite_"+j+"_punkt_"+k+"_element_"+i).innerHTML = "";
}
}
}
}
}
}
[...]
Nur noch mal zur Verdeutlichung; wenn Du sowas hast:
var a = 3;
for (var i=0; i<7; i++) {
if (i==a) {
mach_irgenwas(i);
}
}
dann brauchst Du keine Schleife, sondern kannst gleich schreiben:
mach_irgendwas(a);
In allen Fällen, wo i nicht gleich a ist, passiert ja garnichts.
Ich habe nur ganz grob drübergeschaut, und das war das Einzige, was mir sofort aufgefallen ist. (Den HTML/PHP-Teil habe ich mir übrigens nicht angesehen.)
Ich hoffe, jetzt funktioniert alles so, wie Du es Dir vorstellst.
Grüße
Andreas
Auch eine Reise über tausend Kilometer muß mit einem einzelnen Schritt beginnen.
Laotse "Taoteking"