Sandra Martin: Netscape erkennt meine globalen Variablen nicht

guten morgen!

ich bin noch ein javascript-neuling und habe probleme mit dem netscape-verhalten. es waere schoen, wenn mir jemand helfen koennte. in der forums-archiv-suche habe ich eine abpruefung gefunden, ob eine variable definiert ist oder nicht. diese abpruefung habe ich zum testen angewendet und netscape bringt mir immer die meldung
var a waere undefiniert. ie erkennt die globale variable.

diese script habe ich zum testen verwendet:

<html>
<head>
<title>Globale Variable</title>

<script language="javascript">
<!--
alert("vor var");
var a=0;
alert("nach var");

function test(){
if (typeof(a)=="undefined")
  {
    alert("a ist nicht definiert");
}
else
{
alert ("a ist definiert - gut so");
}
}
-->
</script>
</head>
<body onLoad="test();">
</body>
</html>

es waere schoen wenn ihr mir helfen koennt.
vielen dank im voraus
sandra

  1. auch guten morgen!

    versuch mal so

    <html>
    <head>

    »»  <title>Globale Variable</title>
    »»

    <script language="javascript">
    <!--
    function test(){
    if (a=="undefined")
      {
        alert("a ist nicht definiert");

    »»  }
    »»  else
    »»  {
    »»  alert ("a ist definiert - gut so");
    »»  }

    }
    -->
    </script>
    </head>
    <body onLoad="test();">
    </body>
    </html>

    hoffe hilf dir
    stefan

    1. Hi stefan,

      Wo definierst du meine globale var a=0; ?

      versuch mal so

      <html>
      <head>
      »»  <title>Globale Variable</title>
      »»  
      <script language="javascript">
      <!--
      function test(){
      if (a=="undefined")
        {
          alert("a ist nicht definiert");
      »»  }
      »»  else
      »»  {
      »»  alert ("a ist definiert - gut so");
      »»  }
      }
      -->
      </script>
      </head>
      <body onLoad="test();">
      </body>
      </html>

      hoffe hilf dir
      stefan

      1. ups zu wenig kopiert

        <html>
        <head>
        <title>Globale Variable</title>

        <script language="javascript">
        <!--
        alert("vor var");
        var a=0;
        alert("nach var");

        function test(){
        if (a=="undefined")
          {
            alert("a ist nicht definiert");
        }
        else
        {
        alert ("a ist definiert - gut so");
        }
        }
        -->
        </script>
        </head>
        <body onLoad="test();">
        </body>
        </html>

        das einzige was hier noch nicht stimmt ns ignoriert die beiden ersten alert

        1. Hi stefan,

          das einzige was hier noch nicht stimmt ns ignoriert die beiden ersten alert

          weil das // vorm --> fehlt. Das scheint ja ziemlich originelle Auswirkungen (und jedesmal andere) zu haben.

          Gruss,
          Carsten, der   javascript:   in seine Adress-Zeile eingegeben hat ;)

          1. Danke Carsten,

            weil das // vorm --> fehlt. Das scheint ja ziemlich originelle Auswirkungen (und jedesmal andere) zu haben.

            jetzt erkennt Netscape meine Variablen :-)

            Du hast mir sehr geholfen,
            Sandra

        2. Hi Stefan,

          das einzige was hier noch nicht stimmt ns ignoriert die beiden ersten alert

          bei mir ignoriert er nicht nur die alert-Meldungen, sondern kennt auch die globale Variable nicht und somit kann ich deren Wert auch in weiteren Funktionen nicht benutzen.

          Ich bin schon total verzweifelt :(

          Danke trotzdem Sandra

  2. Hi Sandra,

    Statt:

    if (typeof(a)=="undefined")

    if (typeof(a)==undefined)

    dann klappts.

    Es geht um den _Typ_ undefined und nicht um einen _String_ mit _Inhalt_ undefined.
    Wieso Netscape das nicht konvertiert (Javascript konvertiert Typen ja eigentlich sehr
    grosszügig, und diese Umwandlung wäre ja sogar sinvoll) weiss ich auch nicht.

    Gruss,
    Carsten

    1. Hi Carsten,

      danke fuer den Tip

      Statt:

      if (typeof(a)=="undefined")

      »»  if (typeof(a)==undefined)

      aber leider bekomme ich nun bei der alert(a); Ausgabe noch immer
      die Meldung undefined! Warum steht da kein Wert 0 drin?
      Und warum kommen die alert("vor var"); und die alert("nach var");
      nicht bei Netscape?

      Quelltext:
      <html>
      <head>
      <title>Globale Variable</title>

      <script language="javascript">
      <!--
      alert("vor var");
      var a=0;
      alert("nach var");

      function test(){
      if (typeof(a)==undefined)
        {
          alert("a ist nicht definiert");
      }
      else
      {
      alert ("a ist definiert - gut so");
      alert (a);
      }
      }
      -->
      </script>

      </head>

      <body onLoad="test();">

      </body>

      </html>

      Danke fuer die schnelle Hilfe :-)
      Sandra

      1. Hi Sandra,

        sorry, aber das war blödsinn was ich eben geschrieben hatte.
        Laut Doku liefert typeof einen String zurück, also genauso wie du es gemacht hattest.

        ich hab mal 'n bisschen rumprobiert und folgendes geht bei mir, und zwar je
        nachdem ob ich a definiere oder nicht:

        <head>
        <title>Globale Variable</title>

        <script language="javascript">
        <!--
        var a=0;
        alert(typeof(a));

        function test()
        {
        if (typeof(a)=="undefined")
             alert("a ist nicht definiert");
        else if (typeof(a)=="number")
          alert("a is Zahl");
        else
          alert ("???");
        }

        //-->
        </script>
        </head>
        <body onLoad="test();">
        </body>
        </html>

        den Unterschied zu deinem Code habe sehe ich noch nicht.

        Gruss,
        Carsten

  3. Hi Sandra,

    -->

    da fehlt ein Kommenetarzeichen, also:
    // -->

    gib mal
    javascript:
    in die URL -Zeile vom Netscape ein, dann zeigt er dir ein Fenster in dem

    JavaScript Error: http://plopp.de/test/typeof.htm, line 21:
    syntax error.
    -->
    ..^

    drinsteht.

    Gruss,
    Carsten