Jens: Variablenübergabe

Hallo Forum,

ich habe folgendes Problem:

Die Fehlermeldung "'Bilder[...].src' ist Null oder kein Objekt"
erscheint wenn ich das folgendes Formular sende:
-----------------------------------
<title>Praesentation</title>
<script language="JavaScript">
<!--
function NeuFenster()
{
MeinFenster =
window.open("praesentation.php3","test","width=1024,high=780");
MeinFenster.focus();
}
//-->
</script>

<p align=center>
Bitte geben Sie die Anzahl Bilder ein die präsentiert werden sollen
<form ACTION="javascript:NeuFenster()" Method=Post>
<input name="anzahl">
</BR><input type=submit>
</Form>
</P>
--------------------------------------
Wenn ich jedoch statt
<form ACTION="javascript:NeuFenster()" Method=Post>

folgendes eingebe funktioniert alles tadellos:
<form ACTION="praesentation.php3" Method=Post>

Ich aber die Präsenation in einem anderen Fenster ausführen möchte.
Und brauche deshalb das JS.

Ich hoffe mir kann jemand helfen.

Danke
Jens

  1. Hi,

    »»  window.open("praesentation.php3","test","width=1024,high=780");

    "height", nicht "high".

    <form ACTION="javascript:NeuFenster()" Method=Post>

    Nope, das ist nicht gut. Eine JavaScript-Funktion kann keine Daten per POST oder auch GET entgegennehmen, deswegen ist es sinnfrei, ein Formular mit einer solchen Action zu versehen. Auch, wenn Du zufällig gerade nichts übergeben möchtest.

    Ich aber die Präsenation in einem anderen Fenster ausführen möchte.
    Und brauche deshalb das JS.

    Vom target-Attribut hast Du noch nichts gehört? Das geht ganz prima damit, ganz ohne JavaScript.

    Cheatah

    1. Vom target-Attribut hast Du noch nichts gehört? Das geht ganz prima damit, ganz ohne JavaScript.

      Hallo,

      Doch, aber dann habe ich das Fenster nicht in der größe wie ich es haben will und Scrollbalken, menüleiste etc. sind zu sehen.

      Danke
      Jens

      1. Hi,

        Doch, aber dann habe ich das Fenster nicht in der größe wie ich es haben will und Scrollbalken, menüleiste etc. sind zu sehen.

        stimmt. Ist doch super! :-)

        Es gibt den Weg, onSubmit ein Fenster mit einem bestimmten (HTML-)Namen zu öffnen und dann auf dieses mittels target-Attribut zu verweisen. Im Archiv findest Du dazu mehr. Insbesondere solltest Du aber überlegen, ob die von Dir gewünschten Einschränkungen (evtl. ungünstige Größe, fehlende Grundfunktionen) auch vom Benutzer gewünscht sind. In der Regel ist dem nicht so - und da gilt der Grundsatz:

        Was der Ersteller der Seiten möchte, ist scheißegal.

        Cheatah

  2. function NeuFenster()
    {

    »»  MeinFenster =
    »»  window.open("praesentation.php3","test","width=1024,high=780");
    »»  MeinFenster.focus();

    }
    //-->
    </script>

    Hi!

    Gewöhn dir bitte

    var MeinFenster =
        window.open("praesentation.php3","test","width=1024,high=780");

    an ;)
    Variablen sollten auch als solche initialisiert werden.

    1. Hi,

      Gewöhn dir bitte

      var MeinFenster =

      stimmt im Prinzip, bringt hier aber wenig. Die Variable dürfte nach Beenden der Funktion nicht mehr existieren. Richtig wäre also:

      var MeinFenster;
      function xyz() {
         MeinFenster = window.open(...);
      }

      window.open("praesentation.php3","test","width=1024,high=780");

      Zu dem Parameter "high" habe ich ja schon was gesagt... :-)

      Cheatah

      1. stimmt im Prinzip, bringt hier aber wenig. Die Variable dürfte nach Beenden der Funktion nicht mehr existieren. Richtig wäre also:

        Das bringt hier sehr viel, schon mal was von sauberer Programmierung gehört? ;-)
        Garnicht erst angewöhnen ...

        1. Hi,

          stimmt im Prinzip, bringt hier aber wenig. Die Variable dürfte nach Beenden der Funktion nicht mehr existieren. Richtig wäre also:

          Das bringt hier sehr viel, schon mal was von sauberer Programmierung gehört? ;-)

          siehe Martins Antwort. Es stimmt, daß man "var" benutzen sollte; aber in diesem Fall hätte es mehr geschadet als genützt.

          Garnicht erst angewöhnen ...

          Anders: Gleich _richtig_ angewöhnen! Variablen in dem Scope deklarieren, in dem sie benötigt werden, und nirgendwo sonst. Keine undeklarierten Variablen benutzen.

          In Perl bekommt man bei sowas mit
          #!/usr/bin/perl -w
          use strict;
          wunderschöne Fehlermeldungen, die zur Vermeidung von unsauberer Programmierung beitragen :-)

          Cheatah

    2. Hi Spike,

      Gewöhn dir bitte

      var MeinFenster =
          window.open("praesentation.php3","test","width=1024,high=780");

      an ;)
      Variablen sollten auch als solche initialisiert werden.

      Eine Variable, die in einer Funktion ohne den Bezeichner "var" definiert werden, werden in JS global angelegt (hat denselben Effekt, wie eine Deklaration ohna "var" außerhalb einer Funktion).

      Davon abgesehen: Als was würde sie denn Deiner Meinung ohne "var" initialisiert werden - außer einer Variable??

      Grüße,
      Martin