User: alert Befehl in Firefox geht nicht

hi,
habe folgendes problem:

code:
...
document.getElementById($aktiv).innerHTML="";
  alert("Glückwunsch");
  $fertig=true;

klappt im ie einwandfrei, im ff löst er den alert aber gar nicht erst aus.
Woran kann das liegen?
Danke im Voraus.

  1. klappt im ie einwandfrei, im ff löst er den alert aber gar nicht erst aus.
    Woran kann das liegen?

    An den Syntaxfehlern, die dir die Fehlerkonsole sicher anzeigt.

    1. klappt im ie einwandfrei, im ff löst er den alert aber gar nicht erst aus.
      Woran kann das liegen?

      An den Syntaxfehlern, die dir die Fehlerkonsole sicher anzeigt.

      danke an alle

      firefox kennt _id nicht mit get attribute geholt werden.

      1. Hi,

        firefox kennt _id nicht mit get attribute geholt werden.

        Das ist nach üblicher Grammatik kein sinnvoller Satz.

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
  2. Hallo User,

    was steht denn in der Fehlerkonsole?

    Gruß, Jürgen

    1. Hallo User,

      was steht denn in der Fehlerkonsole?

      Gruß, Jürgen

      Eine Fehlerkonsole wird mir gar nicht angezeigt.
      alert ist eine Schleife eingebunden, ich poste mal etwas mehr code.

      code:
      ...
      function zzz(obj) {
        if($fertig==true) {return;}
        id=obj.id;
        if(id==$aktiv) {return;}
        y=id.substr(1,1);
        x=id.substr(2,1);

      y0=$aktiv.substr(1,1);
        x0=$aktiv.substr(2,1);
        if ($springen==false) {
          if(Math.abs(x-x0)+Math.abs(y-y0)>1) {return;}
        }
        obj.innerHTML="<img src="leer.gif" width=""+$breite+"" height=""+$breite+"">";
        a=document.getElementById($aktiv);
        a.innerHTML=""
        $aktiv=id;
        x=a.style.backgroundPosition;
        a.style.backgroundPosition=obj.style.backgroundPosition;
        obj.style.backgroundPosition=x;
        x=a._id
        a._id=obj._id
        obj._id=x;

      for(y=1; y<=$anz; y++) {
          for(x=1; x<=$anz; x++){
            i="c"+x+y;
            i=document.getElementById(i);
            if(i.id!=i._id) {return;}

      }
        }
        document.getElementById($aktiv).innerHTML="";
        alert("Glückwunsch");
        $fertig=true;
      }

      1. Eine Fehlerkonsole wird mir gar nicht angezeigt.

        Strg + Shift + J

        ich poste mal etwas mehr code.

        Wozu mehr code, dein Code ist fehlerhaft - das sieht man bereits an den bisherigen paar Zeilen.

        1. Hi there,

          Wozu mehr code, dein Code ist fehlerhaft - das sieht man bereits an den bisherigen paar Zeilen.

            
            
          document.getElementById($aktiv).innerHTML="";  
            alert("Glückwunsch");  
            $fertig=true;  
          
          

          Wo siehst Du da fehlerhaften Code?

          1. Wo siehst Du da fehlerhaften Code?

            Mein fehler - syntaktisch ist das natürlich einwandfrei - aber:
            "$aktiv is not defined"

            1. Wo siehst Du da fehlerhaften Code?

              Mein fehler - syntaktisch ist das natürlich einwandfrei - aber:
              "$aktiv is not defined"

              logo...

      2. 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

      3. Hallo,

        Eine Fehlerkonsole wird mir gar nicht angezeigt.

        Nicht alle Browser öffnen automatisch Meldungsfenster bei JavaScript-Fehlern. Hier habe ich zusammengetragen, wie du die jeweiligen Fehlerkonsolen öffnest:
        http://molily.de/js/werkzeuge.html#fehlerkonsole

        Interessant auf der folgende Abschnitt »Fehlersuche durch Kontrollausgaben«:
        http://molily.de/js/werkzeuge.html#fehlersuche
        Um zu untersuchen, warum Firefox erst gar nicht zu deiner alert-Ausgabe kommt, kannst du natürlich weitere Ausgaben einfügen. :)

        Mathias

        1. Hi,

          Interessant auf der folgende Abschnitt »Fehlersuche durch Kontrollausgaben«:
          http://molily.de/js/werkzeuge.html#fehlersuche

          Das finde ich extrem gut.
          Gerade das Lernen, wie man richtig debuggt, ist für Anfänger oft das wichtigste und wird leider häufig vernachlässigt.

          Ich habe leider keinen +1-Button gefunden, sonst hätte ich da drauf geklickt.

          Was mir persönlich fehlt ist ein einfacher Debugging-Mechanismus, welchen ich im Code lassen kann (im Vergleich zu console.log(), welches man i.d.R. nach dem Debuggen entfernt).
          Momentan spiele ich mit der Closure Library rum, welches einen entsprechenden Mechanismus, analog zu Javas java.util.logging, anbietet.
          Vielleicht wäre es noch gut, einen ähnlichen Mechanismus für dauerhaftes Logging kurz zu beschreiben.

          Aber auch in der jetzigen Form wäre es gut, diesen Abschnitt in der FAQ zu verlinken.

          Bis die Tage,
          Matti

  3. hi,
    habe folgendes problem:

    code:
    ...
    document.getElementById($aktiv).innerHTML="";
      alert("Glückwunsch");
      $fertig=true;

    klappt im ie einwandfrei, im ff löst er den alert aber gar nicht erst aus.
    Woran kann das liegen?
    Danke im Voraus.

    $aktiv wird wahrscheinlich keine String Anführungszeichen haben. Deshalb kommt gleich in Zeile 1 ein Fehler (Fehlerkonsole). Zeile 2 wird dann gar nicht erst ausgeführt.
    Vielleicht hast du es aber auch geschafft den alert Befehl global kaputt zu machen, denn seit ca. 17:15 Uhr funktioniert er bei mir auch nicht mehr.

    Gruß
    ironischer
    T-Rex

    1. Hi there,

      $aktiv wird wahrscheinlich keine String Anführungszeichen haben.

      Das wird wahrscheinlich daran liegen, daß $aktiv als Variable gedacht ist, oder?

      Vielleicht hast du es aber auch geschafft den alert Befehl global kaputt zu machen, denn seit ca. 17:15 Uhr funktioniert er bei mir auch nicht mehr.

      Das ist nur Browserhysterie, bei mir geht er noch...;)

  4. Moin!

    document.getElementById($aktiv).innerHTML="";
      alert("Glückwunsch");
      $fertig=true;

    Seit wann ist in Java-Script das Dollar-Zeichen Bestandteil des Satzes gültiger Zeichen für Variablennamen?

    Genau genommen macht der IE was falsch, denn er toleriert Deinen Fehler.

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix

    1. Hi,

      document.getElementById($aktiv).innerHTML="";
        alert("Glückwunsch");
        $fertig=true;

      Seit wann ist in Java-Script das Dollar-Zeichen Bestandteil des Satzes gültiger Zeichen für Variablennamen?

      Z.B. jQuery ist an dir vorbeigegangen? Dort wird mit der Variable $ ein ganzes Framework abgebildet.

      Bis die Tage,
      Matti

      1. Moin!

        Z.B. jQuery ist an dir vorbeigegangen? Dort wird mit der Variable $ ein ganzes Framework abgebildet.

        Dann stelle Dich der Diskussion zur Anpassung dieses Kapitels an Deine Aussage:

        http://de.selfhtml.org/javascript/sprache/regeln.htm#namen@title=http://de.selfhtml.org/javascript/sprache/regeln.htm#namen

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix

        1. [latex]Mae  govannen![/latex]

          Dann stelle Dich der Diskussion zur Anpassung dieses Kapitels an Deine Aussage:

          http://de.selfhtml.org/javascript/sprache/regeln.htm#namen@title=http://de.selfhtml.org/javascript/sprache/regeln.htm#namen

          Die dort aufgeführten Regeln sind nicht (mehr?) richtig.

          Ich werfe mal das (bereits ältere) ECMA262-3 in den Raum:

          IdentifierStart ::
             UnicodeLetter
             $
             _
             \ UnicodeEscapeSequence

          UnicodeLetter enthält aber im Gegensatz zur SelfHTML-Aussage unter vielem Anderem bereits Umlaute.

          Zum Dollar-Zeichen steht dort:

          This standard specifies one departure from the grammar given in the Unicode standard: The dollar sign ($) and the underscore (_) are permitted anywhere in an identifier. The dollar sign is intended for use only in mechanically generated code.

          wobei der letzte Satz soweit in ECMA262-5 nicht mehr enthalten ist.

          Stur lächeln und winken, Männer!
          Kai

          --
          Dank Hixies Idiotenbande geschieht grade eben wieder ein Umdenken
          in Richtung "Mess up the Web".(suit)
          SelfHTML-Forum-Stylesheet
    2. Hi there,

      Seit wann ist in Java-Script das Dollar-Zeichen Bestandteil des Satzes gültiger Zeichen für Variablennamen?

      Zitat O'Reilly, "Javascript", deutsche Ausgabe der 2.Auflage 1997:

      "Im Navigator 3.0 ist zusätzlich $ in Javascript-Bezeichnern zulässig, auch am Anfang. Dies wurde zwecks Kompatibilität mit Java eingeführt.[...] Der Internet Explorer unterstützt in der Version 3.0 das $-Zeichen in Bezeichnern nicht, wird dies aber wohl in einer späteren Version tun."

      Genau genommen macht der IE was falsch, denn er toleriert Deinen Fehler.

      Standardsätze müssen also nicht immer wahr sein...

      1. Moin!

        Zitat O'Reilly, "Javascript", deutsche Ausgabe der 2.Auflage 1997:
        "Dies wurde zwecks Kompatibilität mit Java eingeführt."

        Schei*e. Da sieht man was passiert, wenn man einfach nur zu früh geboren wird. Man denkt, dass $-Zeichen sei in Java-Skript-Bezeichnern nicht zulässig, hatte Ärger mit Gravenreuth und kann sich nicht mehr um einen Posten als Beamter bewerben.

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix