Matti Mäkitalo: alert Befehl in Firefox geht nicht

Beitrag lesen

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