ronizzel: Variable abrufen obwohl sie erst später Wert erhält

Hallo,

ich möchte zu Beginn eines HTML-Dokuments im Head-Bereich einer JavaScript-Funktion bestimmte Optionen übergeben.

Welche das sind hängt jedoch davon ab, was später auf der Seite erscheinen wird. Diese Variable in der die Optionen stehen wird folglich erst später im Script mit einem Wert belegt.

Wie kann ich nun festlegen, dass am Beginn des PHP-Skriptes die Variable erst ausgegeben wird, wenn das Skript abgelaufen ist? Das klingt vielleicht unlogisch, ich sehe hier aber keine andere Möglichkeit...

Danke für eure Hilfe,
Ronny

  1. Hellihello Ronny,

    Wie kann ich nun festlegen, dass am Beginn des PHP-Skriptes die Variable erst ausgegeben wird, wenn das Skript abgelaufen ist?

    Wenn ich das recht verstehe, garnicht. Denn die das Skript wird ja von oben nach unten abgearbeitet. Wenn Du oben echo $title machst, aber erst später $title="Meintitel", dann geht das so nicht.

    Dank und Gruß,

    frankx

  2. Hellihello Ronny,

    Wie kann ich nun festlegen, dass am Beginn des PHP-Skriptes die Variable erst ausgegeben wird, wenn das Skript abgelaufen ist?

    Wenn ich das recht verstehe, garnicht. Denn das Skript wird ja von oben nach unten abgearbeitet. Wenn Du oben echo $title machst, aber erst später $title="Meintitel", dann geht das so nicht.

    Dank und Gruß,

    frankx

    1. Hellihello Ronny,

      Wie kann ich nun festlegen, dass am Beginn des PHP-Skriptes die Variable erst ausgegeben wird, wenn das Skript abgelaufen ist?

      Wenn ich das recht verstehe, garnicht. Denn das Skript wird ja von oben nach unten abgearbeitet. Wenn Du oben echo $title machst, aber erst später $title="Meintitel", dann geht das so nicht.

      Dank und Gruß,

      frankx

      Schade, dann muss ich mir was andres einfallen lassen...

      Danke trotzdem!

  3. Wie kann ich nun festlegen, dass am Beginn des PHP-Skriptes die Variable erst ausgegeben wird, wenn das Skript abgelaufen ist? Das klingt vielleicht unlogisch, ich sehe hier aber keine andere Möglichkeit...

    Wenn du dich konsequent an das Standardprinzip E-V-A = Eingabe - Verarbeitung - Ausgabe hälst, kommt es gar nicht erst zu solchen unlösbaren Situationen.

    Denn Fakt ist: Wenn du einen Wert ausgeben willst, muß er existieren, also durch Eingabe und Verarbeitung zur Verfügung stehen. Anders klappt es nicht.

    1. Wie kann ich nun festlegen, dass am Beginn des PHP-Skriptes die Variable erst ausgegeben wird, wenn das Skript abgelaufen ist? Das klingt vielleicht unlogisch, ich sehe hier aber keine andere Möglichkeit...

      Wenn du dich konsequent an das Standardprinzip E-V-A = Eingabe - Verarbeitung - Ausgabe hälst, kommt es gar nicht erst zu solchen unlösbaren Situationen.

      Denn Fakt ist: Wenn du einen Wert ausgeben willst, muß er existieren, also durch Eingabe und Verarbeitung zur Verfügung stehen. Anders klappt es nicht.

      Naja, der Punkt ist, dass sich erst anhand des jeweiligen Templates (eine index.php in der die Templates eingebunden werden) entscheidet, mit welchen Optionen die Funktion arbeiten soll.

      Nun könnte ich

      a) die JavaScript-Deklatation in den <body>-Teil rücken was - glaube ich - nicht ganz astrein ist oder

      b) das Template ganz zu Beginn verarbeiten und erst später ausgeben, was aber auch irgendwie absurd klingt.

      Wie lösen das denn eigtl umfangreiche CMS oder Foren-Systeme?

      Das Beispiel:
      <head>
      ...
        <script type="text/javascript">
         function load() {
        var newstitle = document.getElementsByClassName('newstitle');
        var news = document.getElementsByClassName('newstext');

      new Accordion(newstitle, news, {<? echo $options ?>});
         }
        </script>
      ...
      </head>
      <body onload="load()">
      ...
      include {template} //vereinfacht
      </body>

      das template könnte so aussehen:

      ....
      echo news('news'); // => die News-Beiträge sollen mit Akkordeon-Effekt ausgegeben werden, das erste soll automatisch geöffnet werden
      ...

      ein anderes so:

      ...
      echo news('site'); // => auch Akkordeon-Effekt, aber keins soll automatisch geöffnet sein, in diesem Falle müsste oben in den geschweiften Klammern "display: false" stehen.

      Also sollte dann in der Funktion news() irgendwo, wenn das Argument "site" ist, $options = "display: false" ausgeführt werden.

  4. ich möchte zu Beginn eines HTML-Dokuments im Head-Bereich einer JavaScript-Funktion bestimmte Optionen übergeben.

    Du kannst die Javascript Funktion doch auch später im Script einfügen. Nämlich dann, wenn du die Variable hast. Muss nicht zwingend im Head sein. Das ist lediglich eine Konvention.

    1. ich möchte zu Beginn eines HTML-Dokuments im Head-Bereich einer JavaScript-Funktion bestimmte Optionen übergeben.

      Du kannst die Javascript Funktion doch auch später im Script einfügen. Nämlich dann, wenn du die Variable hast. Muss nicht zwingend im Head sein. Das ist lediglich eine Konvention.

      a) darf man diese Konvention übergehen? Wenn ja, wozu ist sie denn da? Bzw: An dieser Stelle müsste man sie ja übergehen, folglich sollte es doch eine "offizielle" Variante geben?

      b) Verhalten sich alle Browser dann auch genauso?

      1. a) darf man diese Konvention übergehen? Wenn ja, wozu ist sie denn da? Bzw: An dieser Stelle müsste man sie ja übergehen, folglich sollte es doch eine "offizielle" Variante geben?

        Ja das darf man. Eine Konvention bedeutet lediglich eine allgmeine Vereinbarung an die man sich "per Sitte" halten sollte. Damit ein möglichst einheitlicher Programmierstil geschaffen werden kann.
        Ein anderes Beispiel wäre zum Beispiel die Konvention der Klassennamen, diese sollte man immer Gross schreiben, Funktionen hingegen sollten mit einem kleinbuchstaben beginnen.

        b) Verhalten sich alle Browser dann auch genauso?

        Das funktionniert einwandfrei.