Thorsten F.: Finde den Fehler im Quellcode nicht

Hie der Code
<html>
 <head>
  <title>Auswertung</title>

<script type="text/javascript">

function Frame(URI1,F1) {
     Frame1=eval("parent."+F1);
     Frame1.location.href = URI1;
   }

</script>

</head>

<body>

<script language=javascript>
Frame("seite.html","titel");
</script>

und in genau der 10. Zeile:
     Frame1.location.href = URI1;

kommt in der Statuszeile die Fehlermeldung:

Frame1.location ist Null oder kein Objekt.

woran liegt das?

Beschreibung: Die Seite seite.html soll im Frame mit dem Namen "titel" geladen werden...

  1. hi,

    in genau der 10. Zeile:
         Frame1.location.href = URI1;
    kommt in der Statuszeile die Fehlermeldung:
    Frame1.location ist Null oder kein Objekt.
    woran liegt das?

    Das wird dir doch sehr genau gesagt.

    Du bist immerhin in der Lage, die Fehlermeldung zu lesen. Dann versuche doch auch, sie zu verstehen. "ist Null oder kein Objekt" bedeutet, daß es für "URI1" keine Entsprechung gibt ... Das ist richtig. Du hast nirgends in deinem Script (vorausgesetzt, du hast alles gepostet) eine Festlegung getroffen, was denn dieses "URI1" sein soll. Wenn du das behebst, wirst du übrigens prompt eine Fehlermeldung erhalten, daß "F1" nicht vorhanden ist.

    Beschreibung: Die Seite seite.html soll im Frame mit dem Namen "titel" geladen werden...

    Das ist _noch_ kein Problem, bringt dich aber in die Nähe einer mit "Jehova"-Schildern bewaffneten Opposition.

    In deinem ersten Javascript schreibst du was von
     Frame1=eval("parent."+F1);
     Frame1.location.href = URI1;
    In deinem zweiten Javascript aber steht:
     Frame("seite.html","titel");
    Meinst du, daß das irgendwie zusammenpaßt?

    Du solltest überlegen, was genau du erreichen möchtest. Im allgemeinen ist es ziemlicher Unsinn, im Header-Bereich ein Javeascript zu notieren und unterhalb von <body> ein zweites, das darauf Bezug nehmen soll. Das geht schief und ist überhaupt wahrscheinlih genauso überflüssig wie unsauber.

    Grüße aus Berlin

    Christoph S.

    1. [...]Im allgemeinen ist es ziemlicher Unsinn, im Header-Bereich ein Javeascript zu notieren und unterhalb von <body> ein zweites, das darauf Bezug nehmen soll. Das geht schief und ist überhaupt wahrscheinlih genauso überflüssig wie unsauber.

      habe ich irgendeine technische (Fehl-)Entwicklung verpaßt?
      Kannst Du mir mal eine Quelle dazu nennen?

      Gruß
      Reiner

      1. <head>
          <script type="text/javascript">

        function Frame(URI1,F1) {
             Frame1=eval("parent."+F1);
             Frame1.location.href = URI1;
           }

        </script>

        </head>

        <body>

        <script language=javascript>
        Frame("seite.html","titel");
        </script>
        ...
        </body>
        </html>

        habe den obigen Quellcode aber schon des öfteren benutzt und da habe ich keine Fehlermeldung bekommen. Deshalb verstehe ich das jetzt.

        1. hups.....

          habe den obigen Quellcode aber schon des öfteren benutzt und da habe ich keine Fehlermeldung bekommen. Deshalb verstehe ich das jetzt.

          ...verstehe ich das jetzt NICHT

          1. hups.....

            habe den obigen Quellcode aber schon des öfteren benutzt und da habe ich keine Fehlermeldung bekommen. Deshalb verstehe ich das jetzt.

            ...verstehe ich das jetzt NICHT

            hast Du mal meinen Beitrag _gelesen_?

            Gruß
            Reiner

    2. Moin!

      Du bist immerhin in der Lage, die Fehlermeldung zu lesen. Dann versuche doch auch, sie zu verstehen. "ist Null oder kein Objekt" bedeutet, daß es für "URI1" keine Entsprechung gibt ... Das ist richtig. Du hast nirgends in deinem Script (vorausgesetzt, du hast alles gepostet) eine Festlegung getroffen, was denn dieses "URI1" sein soll. Wenn du das behebst, wirst du übrigens prompt eine Fehlermeldung erhalten, daß "F1" nicht vorhanden ist.

      Nochmal der Code:
         function Frame(URI1,F1) {
           Frame1=eval("parent."+F1);
           Frame1.location.href = URI1;
         }

      Und jetzt die dumme Frage, was die Fehlermeldung "ist Null oder kein Objekt", die sich auf Frame1.location bezieht, denn mit URL1 zu tun haben soll - diese Variable wird als Funktionsparameter nämlich sehr wohl definiert.

      In deinem ersten Javascript schreibst du was von
      Frame1=eval("parent."+F1);
      Frame1.location.href = URI1;
      In deinem zweiten Javascript aber steht:
      Frame("seite.html","titel");
      Meinst du, daß das irgendwie zusammenpaßt?

      Wenn man eine Funktion "Frame" definiert, wie hier geschehen ist, dann paßt das prima.

      Du solltest überlegen, was genau du erreichen möchtest. Im allgemeinen ist es ziemlicher Unsinn, im Header-Bereich ein Javeascript zu notieren und unterhalb von <body> ein zweites, das darauf Bezug nehmen soll. Das geht schief und ist überhaupt wahrscheinlih genauso überflüssig wie unsauber.

      Ich denke, der Fragesteller weiß schon recht genau, was er möchte, und die dafür eingesetzten Mittel sind auch alle im Grundsatz tauglich. Es ist auch niemals verwerflich gewesen, Javascripte geteilt in verschiedenen Abschnitten in Body und Head zu notieren und untereinander Bezug nehmen zu lassen - jeder banalste Aufruf einer onclick-Funktion tut das.

      Dass Javascript sich üblicherweise im Head befindet, insbesondere Funktionsdefinitionen, liegt schlicht daran, dass man auf diese Dinge nur zugreifen kann, wenn sie definiert sind - und da der Head als allererstes geladen ist, stehen dort abgelegte Javascripte eben schon sehr früh während des Ladevorgangs zur Verfügung, so dass man im Body darauf Bezug nehmen kann.

      Aber genauso problemlos könnte man sein Javascript auch erst ganz unten im Body notieren. Ich hatte mir mal ein Javascript geschrieben, welches praktisch automatisch und nur anhand definierter Bildnamen (mit passenden Prä- oder Suffixen für Hi- und Lo-Variante) und name-Attribute Mouseover-Buttons realisierte, ohne dass man in den Bildern oder Links umständliche onmouseover-Eventhandler ausschreiben mußte. Die Einbindung dieser externen Skriptdatei durfte aus naheliegenden Gründen erst wirksam werden, nachdem alle zu beeinflussenden HTML-Elemente bereits geladen waren - also direkt vor dem </body>. Alternativ hätte ich onload eine init-Funktion aufrufen können.

      - Sven Rautenberg

  2. Hi,

    function Frame(URI1,F1) {
         Frame1=eval("parent."+F1);
         Frame1.location.href = URI1;
       }
    Frame("seite.html","titel");

    Gibt es im parent dieser Seite einen Frame namens "titel"?

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  3. Moin!

    Frame1=eval("parent."+F1);

    Das ist sehr häßlich. Lies mal meinen Artikel über den Fensterzugriff mit Javascript und ersetze mit diesem Wissen dann das eval().

    Tipp: Den Namen des anzusprechenden Frames kannst du auch per frames['name'] angeben, bzw. statt des Strings auch eine Variable nehmen:

    parent.frames[F1].location.href = URL1;

    Wenn dir als Fehler angegeben wird, dein Frame wäre Null oder kein Objekt, dann stimmt wahrscheinlich etwas nicht mit dem Namen deines Frames. Tippfehler alle ausgeschlossen?

    - Sven Rautenberg

    1. also Leute, hätte nicht gedacht, dass dieser Thread ein so hohes Aufsehen erregt. Und nu kann dieser Thread auch geschlossen, da ich den Fehler gefunden habe.
      Am Code ligt es nicht, der läuft wunderbar.
      Aber es liegt daran.

      Ich habe eine Homepage mit drei Frames.
      Jetzt habe ich eine neue Seite geschrieben, die ich dann getestet habe, die aber zunächst nichts mit meiner Page zu tun hatte! Also bestand diese Seite auch aus keinen Frames. Halt nur diese eine Seite, die ch getestet habe, war zu sehen.

      Als ich die Seite dann auf der Homepage eingefügt habe, waren ja alle Frames da und schwupps, es hat geklappt.

      Die seite knnte ja vorher ja gar keine Frames, da gar keine da waren!

      Ich entschuldige mich zutiefst für diesen "kleinen" Fehler meinerseits....
      Wünsche noch eine gute Nacht

      1. Hi,

        Am Code ligt es nicht, der läuft wunderbar.

        Natürlich liegt das am Code(r). Wenn man Zugriffe auf Objekte durchführt, von denen man nicht sicher sein kann, daß sie existieren (warum auch immer: Absicht/Testing, Übertragungsfehler, Browserunvermögen, ...), dann fragt man *vor* dem Zugriff ab, ob das Objekt überhaupt existiert - und reagiert *dann* entsprechend! =:-o

        Gruß, Cybaer

        --
        Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
        1. Natürlich liegt das am Code(r). Wenn man Zugriffe auf Objekte durchführt, von denen man nicht sicher sein kann, daß sie existieren (warum auch immer: Absicht/Testing, Übertragungsfehler, Browserunvermögen, ...), dann fragt man *vor* dem Zugriff ab, ob das Objekt überhaupt existiert - und reagiert *dann* entsprechend! =:-o

          jaja, lag ja dann schon am Code. Der war aber uschuldig, da der User mist gebaut hat!

          1. Hi,

            jaja, lag ja dann schon am Code. Der war aber uschuldig, da der User mist gebaut hat!

            Guter Code sollte damit rechnen, daß der User Mist baut! :)

            Gruß, Cybaer

            --
            Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!