Unregelmäßige Fehlermeldung

  • Hallo zusammen,

    ich hab mal ne Frage. Ich hab mir eine HTML Seite, für meine Desktophintergrund, mit Javascript gebastelt. Ein Kalender der mir meine Urlaubsplanung anzeigt, eine Uhr, und noch eine kleine Spielerei.
    Diese zeigt mir zum Einprägen per Zufall Länder mit deren Hauptstädten. Das Script läuft eigentlich super nur bekomme ich in unregelmäßigen Abständen eine Fehlermeldung das in der Zeile XX Fehler „undefined“ ist Null oder kein Objekt ???

    Kann mir da jemand weiter helfen?

    Ein Auszug:



    Rot in dieser Zeile Zeichen 2 ist der Fehler!?

    Vielen Dank schon mal, Oliver

  • Hi,

    weil Javascript DOM bietet? Was bedeutet das?

    zu deiner Frage ich wollte die Möglichkeit, bestimmen zu können dass entweder nur Länder in Europa oder alle Länder per Zufall angezeigt werden.
    Dies realisiere ich durch den Werte Bereich meiner Zufallszahl.
    D.h. eine Zahl zwischen 0-46 ist ein Europäisches Land und eine Zahl zwischen 0-193 sind alle Länder.

  • Meine Vermutung ist, dass deine bereich-Variable Werte enthält, die auf Array-Elemente zeigt, die nicht existieren. Häng mal das gesamte Script an, damit ich das durchchecken kann.

    Zu innerHTML & DOM:
    ganz einfach: Wenn man innerHTML verwendet, kann es passieren (entweder durch schlechtes design oder aber durch schlechte Variableninhalte), dass invalider HTML-Code erstellt wird. Die Folge daraus ist, dass jeder Browser in den sogenannten Quirks-Modus geht (entgegen der weitverbreiteten Meinung, gibt es den in JEDEM Browser). Das Problem daran ist, dass die Browser unter Umständen den Code in unterschiedlicher Weise interpretieren. Dadurch entsteht eine fehlerhafte Darstellung.

    Beim DOM (Document Object Model) ist das nicht mehr möglich, da die Knoten selbst erstellt werden. Man erstellt die HTML-Elemente einzeln und verschachtelt sie ineinander. Das geschieht nach W3C-Standards und wird dadurch 100%ig von jedem Browser gleich interpretiert. Sogar in Internet Explorer 5.5.

    Ein weiterer Vorteil am DOM ist, dass es höhere Performance bietet. Jeder Browser rechnet den HTML-Code erst auf DOM um und verarbeitet ihn erst anschließend.
    Wenn man die DOM-Elemente direkt bearbeitet erspart man sich im Gegensatz zu innerHTML die Umrechnung.

    Außerdem ist innerHTML eine Microsoft-Erfindung --> böse ;D

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • Hallo vielen Dank für Eure Kompetente Hilfe und für die genauer Erläuterung Dodo. :)

    Also i soll einfach nur meine Zufallszahl sein. Gute Frage was i nach der Rundung wäre. Ich weis nur das die Berechnung so iO ist wenn ich bereich auf 46 setze erhalte ich nur Zufallszahlen in diesem Bereich und wenn ich sie auf 193 gesetzt wird erhalte ich auch keine Zahl die dann größer wäre.

    Das ganze Skript anhängen kann ich machen nur es besteht aus mehren Dateien und der Quelltext ist selbst zu lang für diesen Forum Post. Hab ihr eine Idee?

    Gruß Oliver

  • damit sollte es in jedem fall klappen:

    Something big is coming. And there will be pirates and ninjas and unicorns...

    Einmal editiert, zuletzt von Dodo (9. Juni 2010 um 14:48)

  • Also i soll einfach nur meine Zufallszahl sein. Gute Frage was i nach der Rundung wäre. Ich weis nur das die Berechnung so iO ist wenn ich bereich auf 46 setze erhalte ich nur Zufallszahlen in diesem Bereich und wenn ich sie auf 193 gesetzt wird erhalte ich auch keine Zahl die dann größer wäre.

    Ja, aber:

    Code
    i = (1 + bereich) * (Math.random()); //47 * 0,01 = 0,47
    i = Math.round(i); //0,47 gerundet ergibt 0
    
    
    Hauptstadt[i][str1] //ergibt Hauptstadt[0][str1] und das ist nicht definiert.


    Demnach müsste, meine ich, der Codeabschnitt so lauten:

    Zitat

    do
    {
    i = (1 + bereich) * (Math.random());
    i = Math.round(i);
    }while((typeof Hauptstadt[i]) != 'object');


    Die Neuzuordnung soll ja erfolgen, bis ich ein gültiges Objekt habe, nicht solange ich ein gültiges Objekt habe.

    Information will frei verfügbar sein.

    Don't eat unpeeled hedgehogs.

  • Demnach müsste, meine ich, der Codeabschnitt so lauten:

    Die Neuzuordnung soll ja erfolgen, bis ich ein gültiges Objekt habe, nicht solange ich ein gültiges Objekt habe.

    Jau stimmt.
    Sorry, nicht bedacht. War im Stress^^ (musste nach Wien)

    So schon ausgebessert, danke

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • Hi und wieder zurück,


    so das ist jetzt aber natürlich Peinlich, ich weis jetzt endlich was du meinst. :(

    Und das erklärt auch einiges, zB warum der Fehler so unregelmäßig auftaucht.

    Man da hätte ich auch selber drauf kommen können.

    Ich sage mal vielen Dank!!!

    Oliver