julianp: "Reference to undefined variable"

Hallo!
Mein Script läuft aufm Firefox perfekt.
Doch nun musste ich mit erschrecken feststellen das alle anderen Browser streiken... (Safari, Opera, IE,..)

Als Fehler bekomme ich immer:
"message: Statement on line 3: Reference to undefined variable: Initialize"

Versteht Firefox als einziger die Schreibweise
var Name = {
     eigenschaft : "value",
     methode : function(){
          //usw
     }
};

Die Seite findet ihr unter http://www.hypenox.com

Bin noch nicht so gewieft in Javascript ;)
Lg Julian

  1. Hallo,

    Kurzschreibweise füe Objecte verstehen auch andere Browser. Der Fehler muss an einer anderen Stelle leigen.

    Poste doch mal deinen Code.

    Grüße, Andi!

    1. Poste doch mal deinen Code.

      index.php

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
      <title>Julian Pehm - Showcase 2006/07</title>
      <link href="style.css" rel="stylesheet" type="text/css" />
      <script src="js/functions.js" type="text/javascript"></script>
      <script src="js/clients.js" type="text/javascript"></script>
      </head>

      <body>
      <?php
      //Include Functions Lib
      include("php/functions.php");

      //Include Navigation
      include("php/nav.php");

      //Include Content
      include("php/content.php");
      ?>

      <div id="linkContainer">
      <script type="text/javascript">
      <!--
      Initialize.run();
      //-->
      </script>
      </div>
      <noscript>

      <div id="noscript">For full functionality please enable javascript.</div>
      </noscript>
      </body>
      </html>

      js/function.js#####

      Das findet man unter http://www.hypenox.com/js/functions.js

      1. Keiner eine Lösung für mein Problem?
        Ich hab auch schon Google stundenlang bemüht und nichts gefunden
        lg julian

        1. Wieder einmal zu voreilig von mir.
          Der Reference Error wurde dadurch erzeugt das auch hinter der letzten Methode ein Komma stand:

          var Name = {
               methodeEins : function(){
                      //code
               },
               methodeZwei : function(){
                       //code
               }   //<----HIER KEIN KOMMA HIN!
          };

          Hmpf das ist es was ich am debuggen liebe. Ein Komma zuviel und NIX funzt und ein Nachmittag fürn ***** :D

          Danke an alle die mir geholfen haben.

          lg Julian

  2. Hallo,

    deine Externen Javascript Dateien werden erst geladen wann das HTML Dokument komplett vorliegt. Du müsstest Initialize.run() anders aufrufen. z.B onload oder in der Externen JS Datei.

    Grüße, Andi

    1. Hallo,

      deine Externen Javascript Dateien werden erst geladen wann das HTML Dokument komplett vorliegt. Du müsstest Initialize.run() anders aufrufen. z.B onload oder in der Externen JS Datei.

      Grüße, Andi

      Danke probier ich gleich mal aus.
      Habe ich nicht gewusst dass externe Files erst am Schluss geladen werden (jedenfalls in manchen Browsern)

      Danke für die rasche kompetente hilfe!
      lg julian

  3. Moin!

    Mein Script läuft aufm Firefox perfekt.
    Doch nun musste ich mit erschrecken feststellen das alle anderen Browser streiken... (Safari, Opera, IE,..)

    Da du parallel im noch nicht fertig geladenen Dokument sowohl mit document.write als auch mit DOM-Methoden arbeitest, lass dir gesagt sein:

    "NIEMALS im noch nicht fertig geladenen Dokument mit DOM arbeiten! Damit erst beginnen, wenn onload gefeuert hat!"

    Der Grund ist, dass die diversen DOM-Kind-Eltern-Relationen für halb geladene Dokumente nirgendwo definiert sind, und man deshalb auf undefinierte Resultate stößt - auch zwischen unterschiedlichen Browsern.

    Wirklich verläßlich nutzbar ist das DOM erst, nachdem das Dokument "onload" gemacht hat. Vorher muß man mit document.write() ran.

    Als Fehler bekomme ich immer:
    "message: Statement on line 3: Reference to undefined variable: Initialize"

    Alle von dir genannten Browser haben Javascript-Fehlerkonsolen etc., in denen sie die Probleme sichtbar machen. Mein Opera sagt beispielsweise, dass ihm die Datei js/functions.js in Zeile 36 nicht gefällt. Der Fehler bei Initialize.run() wäre dann nur ein Folgefehler.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
    1. Moin!

      Mein Script läuft aufm Firefox perfekt.
      Doch nun musste ich mit erschrecken feststellen das alle anderen Browser streiken... (Safari, Opera, IE,..)

      Da du parallel im noch nicht fertig geladenen Dokument sowohl mit document.write als auch mit DOM-Methoden arbeitest, lass dir gesagt sein:

      "NIEMALS im noch nicht fertig geladenen Dokument mit DOM arbeiten! Damit erst beginnen, wenn onload gefeuert hat!"

      Der Grund ist, dass die diversen DOM-Kind-Eltern-Relationen für halb geladene Dokumente nirgendwo definiert sind, und man deshalb auf undefinierte Resultate stößt - auch zwischen unterschiedlichen Browsern.

      Wirklich verläßlich nutzbar ist das DOM erst, nachdem das Dokument "onload" gemacht hat. Vorher muß man mit document.write() ran.

      Als Fehler bekomme ich immer:
      "message: Statement on line 3: Reference to undefined variable: Initialize"

      Alle von dir genannten Browser haben Javascript-Fehlerkonsolen etc., in denen sie die Probleme sichtbar machen. Mein Opera sagt beispielsweise, dass ihm die Datei js/functions.js in Zeile 36 nicht gefällt. Der Fehler bei Initialize.run() wäre dann nur ein Folgefehler.

      • Sven Rautenberg

      Hallo!

      Also das ist das Problem. Dann hab ich ja ganzschönen Quark zusammen gescriptet.

      Hm. Könnte ich das konkret so umgehen das ich erstmal fertig laden lasse und die Initialize.run() erst zB onclick abfeuere?
      (Ich probiere das gerade mal aus)

      Möchte nämlich nicht unbedingt alles nochmal machen.

      Danke
      lg Julian

      PS: Die Consolenmeldungen der Browser habe ich mir angeschaut (alle eigentlich das gleiche bis auf FF)
      Zeile 36 ist bei mir "};" - Die abschließende Klammer des Initialize-Objects.

      Danke