Hi,
function zzz(obj) {
if($fertig==true) {return;}
Wo kommt $fertig denn her? Ich gebe dir den gutgemeinten Ratschlag, auf globale Variablen zu verzichten.
Außerdem kannst du dir den Vergleich mit "true" sparen: if ($fertig) { return; }
macht das gleiche.
Wenn du wissen willst, ob $fertig ein boolescher Wert ist (und nicht nur zu einem solchen ausgewertet werden kann), dann frage es mit einem Identitätsvergleich ab:
if ($fertig === true) { return; }
id=obj.id;
Deklariere id als lokal, also mit var. Den gleichen Kommentar spare ich mir ab jetzt für alle anderen lokalen Variablen.
if(id==$aktiv) {return;}
Wo kommt $aktiv her?
a=document.getElementById($aktiv);
Hast du mal geschaut, ob a hier auch das ist, was du erwartest?
x=id.substr(2,1);
[...]
x=a.style.backgroundPosition;
[...]
x=a._id
Die Bedeutung einer Variable zu ändern ist meist kein Zeichen sauberer Programmierung.
Mittel- bis langfristig wird es dir helfen, Variablennamen zu wählen, welche den Inhalt der Variable beschreiben (in zweitem Fall kann ich x akzeptieren, im ersten vielleicht, wenn die id entsprechend aufgebaut ist).
Aber dann wird x auf einmal der komplette id String und nicht mehr nur eine Zahl (ich nehme mal an, dass eine Zahl beim substr extrahiert wird).
for(y=1; y<=$anz; y++) {
for(x=1; x<=$anz; x++){
Arrays beginnen in JavaScript beim Index 0 und nicht 1. Folglicherweise musst du dann auch bis zum Element mit dem Index $anz-1 iterieren und nicht bis $anz.
Bis die Tage,
Matti