Werfel: Dateien best. Endung in Ordner und dessen Subordner zählen

Hallo,

bin in PHP leider noch ziemlich unbefangen und brauche eine Funktion, die mir die Anzahl der Dateien einer bestimmten Endung aus einem Ordner und dessen Unterordner zurückgibt. Bisher fand ich folgendes:

  
   $a_dateien = glob('C:\HDR-bilder\*.png');  
   $returnValue = count( (is_array($a_dateien) ? $a_dateien : NULL) );  

Leider zählt das Script so nur die Dateien in dem genannten Ordner, nicht in dessen Unterordnern, und das auch nur, wenn die Groß-/Kleinschreibung der Dateiendung stimmt.

Kann mir jemand die Funktion schreiben (sorry, wenn ich so dreist frage) oder einen Hinweis geben, wo ich zielführende Infos finde?

Vielen vielen Dank und einen schönen Sonntag
Markus Werfel

  1. Liebe(r) Werfel,

    ich mag glob nicht. Ich arbeite lieber mit readdir(). Und dort habe ich in den Nutzerkommentaren das hier gesehen: Nutzer-Kommentar von Dave

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Hello,

      ich mag glob nicht. Ich arbeite lieber mit readdir(). Und dort habe ich in den Nutzerkommentaren das hier gesehen: Nutzer-Kommentar von Dave

      soweit ich mich an die Funktionsweise von is_dir() erinnere, hat dieses verlinkte Script auch das von mir beschriebene zyklische Rekursionsproblem. is_dir() ist auch dann true, wenn es sich um einen Link handelt, der auf ein Directory zeigt. Das muss im Script auf jeden fall noch abgefangen werden.

      if (!is_link(...) && is_dir(...))
         {
             ### bedenkenlos aufnehmen in Liste
         }

      wäre da das mindeste.

      Liebe Grüße aus dem schönen Oberharz

      Tom vom Berg

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
      1. Lieber Tom,

        grundsätzlich hast Du in der Sache mit den Links recht. In meiner Praxis hat sich das mit den symbolischen Links aber noch nie bemerkbar gemacht, da in meinem DocumentRoot (und Unterverzeichnissen) keine solchen existieren. Mir hat sich der Vorteil von solchen Links bisher in diesem Kontext auch noch nicht erschlossen.

        Was mache ich denn z.B. bei folgender Situation:

        [DocumentRoot]
          |
          +-- [admin] (mit .htaccess passwortgeschützt)
          |      |
          |      +-- [images]
          |      |      |
          |      |      +-- geheim1.gif
          |      |      +-- geheim2.gif
          |      |
          |      +-- admin-script.php
          |
          +-- [images] (symbolischer Link auf /admin/images)

        Die Bilddateien in /admin/images sollten ja passwortgeschützt sein. Sind sie das über den symbolischen Link noch immer?

        Liebe Grüße,

        Felix Riesterer.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
        1. Hello Lieber Felix,

          grundsätzlich hast Du in der Sache mit den Links recht. In meiner Praxis hat sich das mit den symbolischen Links aber noch nie bemerkbar gemacht, da in meinem DocumentRoot (und Unterverzeichnissen) keine solchen existieren. Mir hat sich der Vorteil von solchen Links bisher in diesem Kontext auch noch nicht erschlossen.

          Was mache ich denn z.B. bei folgender Situation:

          [DocumentRoot]
            |
            +-- [admin] (mit .htaccess passwortgeschützt)
            |      |
            |      +-- [images]
            |      |      |
            |      |      +-- geheim1.gif
            |      |      +-- geheim2.gif
            |      |
            |      +-- admin-script.php
            |
            +-- [images] (symbolischer Link auf /admin/images)

          Die Bilddateien in /admin/images sollten ja passwortgeschützt sein. Sind sie das über den symbolischen Link noch immer?

          Du scheinst in den letzten Tagen etwas zerstreut zu sein. :-D

          Selbstverständlich sind bei einem vernünftigen Webserver auch Links noch passwortgeschützt, wenn die Original-Ressource passwortgeschützt ist. Die Links werden vorher aufgelöst und dann erst der expandierte Real-Path angewandt. Bei Linux-Betriebssystemen sorgt bereits dieses für die Expansieon im Dateisystem. Für die Expansion bei virtuellen Verzeichniszuordnungen sorgt der Apache aber auch.

          Liebe Grüße aus dem schönen Oberharz

          Tom vom Berg

          --
          Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
  2. Hello,

    Kann mir jemand die Funktion schreiben (sorry, wenn ich so dreist frage) oder einen Hinweis geben, wo ich zielführende Infos finde?

    suche hier im Archiv, dann findest Du auch:

    http://forum.de.selfhtml.org/archiv/2007/12/t163759/#m1066617

    Hier wird eine linearisierte Liste aus der rekursiven Verzeichnisstruktur.

    glob() arbeitet leider nicht case-insensitiv, das stimmt.
    Dazu müsstest Du vielleicht einfach das ganze Verzeichnis auslesen und dann die Endung selber vergelichen mit einer Stringfunktion. Alle Einträge im Array, die nicht passen, sortiertst Du dann einfach wieder aus. Oder Du benutzt gleich die Funktionen

    opendir()   http://de.php.net/manual/en/function.opendir.php

    und

    readdir()   http://de.php.net/manual/en/function.readdir.php

    oder

    scandir()   http://de.php.net/manual/en/function.scandir.php

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
  3. Hi,

    $a_dateien = glob('C:\HDR-bilder*.png');

    $returnValue = count( (is_array($a_dateien) ? $a_dateien : NULL) );

      
    
    > Leider zählt das Script so nur die Dateien in dem genannten Ordner, nicht in dessen Unterordnern  
      
    ja, das ist richtig. Um auch Unterverzeichnisse mitzuzählen, müsstest du nun das Array durchgehen, jeden einzelnen Eintrag daraufhin prüfen, ob er ein Verzeichnis beschreibt (dabei die Pseudoverzeichnisse "." und ".." überspringen) und ggf. für dieses Verzeichnis das gleiche Verfahren wiederholen. Es bietet sich an, diesen Ablauf mit einer Rekursion zu lösen.  
      
    
    > und das auch nur, wenn die Groß-/Kleinschreibung der Dateiendung stimmt.  
      
    Das Argument zählt nicht: Auf Systemen, die Groß/Kleinschreibung bei Dateinamen unterscheiden, ist dein Einwand richtig. Aber da ist es ja auch gewollt, da anything.png eine ganz andere Bedeutung als anything.PNG haben kann.  
    Auf Windows-basierten Systemen, die das nicht unterscheiden, findet dein Ansatz mit \*.png aber auch \*.PNG oder \*.Png oder ...  
    Interessant könnte aber auch die Verwendung des Flags GLOB\_BRACE sein, damit könntest du automatisch nach unterschiedlichen Schreibweisen suchen.  
      
    
    > Kann mir jemand die Funktion schreiben (sorry, wenn ich so dreist frage)  
      
    Nein. Das ist eigentlich nicht das erklärte Ziel dieses Forums. Aber wir helfen dir gern, wenn du es selbst lösen willst und irgendwo nicht weiterkommst.  
      
    
    > oder einen Hinweis geben, wo ich zielführende Infos finde?  
      
    Den IMHO entscheidenden Hinweis habe ich schon gegeben: Rekursion. Die User Contributed Notes im [PHP-Manual zu glob()](http://de2.php.net/manual/en/function.glob.php) enthalten ein paar interessante und hilfreiche Beispiele. Alles andere bekommst du mit einer einfachen Schleife über das Array, das du von glob() zurückbekommst.  
      
    So long,  
     Martin  
    
    -- 
    Männer sind ungerecht: Sie sehen immer nur den Baum, den eine Frau mit dem Auto gerammt hat. Aber die vielen Bäume, die sie nicht einmal gestreift hat, sehen sie nicht.
    
    1. Hello,

      Den IMHO entscheidenden Hinweis habe ich schon gegeben: Rekursion. Die User Contributed Notes im PHP-Manual zu glob() enthalten ein paar interessante und hilfreiche Beispiele. Alles andere bekommst du mit einer einfachen Schleife über das Array, das du von glob() zurückbekommst.

      ...und den zweiten entscheidenden Hinweis habe ich ihm gegeben und widerhole ihn hier nochmals zur Sicherheit: Achte auf zyklische Verläufe durch Links auf Directories! Die müssen abgefangen werden.

      Die Beispiele in den UCN beachten dies leider NICHT!

      Liebe Grüße aus dem schönen Oberharz

      Tom vom Berg

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
      1. Hello,

        Die Beispiele in den UCN beachten dies leider NICHT!

        Die bessere Nachschlagequelle ist daher mMn auch immer unser Archiv. Da werden die Dinge meistens unmisssverständlich und auf Deutsch ausdiskutiert!

        Ich wünsche mir daher schon seit langem einen Direktlink auf die Suche im Formular für den Post. Es ist immer lästig, erst wieder an den Anfang der Forumshauptdatei zurückblattern zu müssen usw.

        Dieser kleine chrirurgischer Eingriff in das Template für das Posting-Formular ist mMn nicht zuviel verlangt, oder?

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. Hallöle!

          Dieser kleine chrirurgischer Eingriff in das Template für das Posting-Formular ist mMn nicht zuviel verlangt, oder?

          Also im Verhältnis zum Setzen eines Bookmarks ist der Aufwand ungleich höher, finde ich.[1]

          File Griese,

          Stonie

          [1]Ich brauche die Suche ja nun oft, deshalb reicht's bei mir, wenn ich in die Adresszeile meines Browsers das Wort "Suche" eingebe - dann kriege ich die Suche automatisch angeboten.

          --
          It's no good you trying to sit on the fence
          And hope that the trouble will pass
          'Cause sitting on fences can make you a pain in the ass.
          Und im Übrigen kennt auch Stonie Wayne.
          1. Hallo,

            ["Archivsuche"-Link im Postingformular]
            »» Dieser kleine chrirurgischer Eingriff in das Template für das Posting-Formular ist mMn nicht zuviel verlangt, oder?

            an sich war ich geneigt, Tom spontan von ganzem Herzen zuzustimmen, aber ...

            Also im Verhältnis zum Setzen eines Bookmarks ist der Aufwand ungleich höher, finde ich.[1]

            ... dass die Lösung so einfach sein könnte, habe ich bisher auch übersehen. Und dabei habe ich in meinen Bookmarks sowieso schon eine ganze Gruppe Einträge zum SELF-Raum. Naja, manchmal braucht man einfach nur jemanden, der einem dabei behilflich ist, das Brett mal eben abzusetzen. ;-)

            Was ich allerdings immer noch sehr gern sähe, wäre eine Suche, die die aktiven Beiträge innerhalb der Forumshauptdatei erfasst. Allerdings kann ich nicht absehen, wieviel Arbeit das bedeuten würde.

            Schönen Sonntag noch,
             Martin

            --
            Niemand ist überflüssig: Er kann immer noch als schlechtes Beispiel dienen.
            1. Hello,

              an sich war ich geneigt, Tom spontan von ganzem Herzen zuzustimmen, aber ...

              Also im Verhältnis zum Setzen eines Bookmarks ist der Aufwand ungleich höher, finde ich.[1]

              ... dass die Lösung so einfach sein könnte, habe ich bisher auch übersehen. Und dabei habe ich in meinen Bookmarks sowieso schon eine ganze Gruppe Einträge zum SELF-Raum. Naja, manchmal braucht man einfach nur jemanden, der einem dabei behilflich ist, das Brett mal eben abzusetzen. ;-)

              *ähem*
              Wie war das mit dem logischen Denkvermögen doch gleich?  :-D

              Liebe Grüße aus dem schönen Oberharz

              Tom vom Berg

              --
              Nur selber lernen macht schlau
              http://bergpost.annerschbarrich.de
              1. Hi,

                »» »» Also im Verhältnis zum Setzen eines Bookmarks ist der Aufwand ungleich höher, finde ich.[1]
                »» ... dass die Lösung so einfach sein könnte, habe ich bisher auch übersehen. Und dabei habe ich in meinen Bookmarks sowieso schon eine ganze Gruppe Einträge zum SELF-Raum. Naja, manchmal braucht man einfach nur jemanden, der einem dabei behilflich ist, das Brett mal eben abzusetzen. ;-)
                *ähem*
                Wie war das mit dem logischen Denkvermögen doch gleich?  :-D

                keine Ahnung, was war das noch gleich?

                Ja, mir wurde schon öfters nachgesagt, dass ich in einigen Punkten "typisch weibliche" Eigenschaften hätte. Na, meinetwegen ...

                Dein KO-Argument (viele verschiedene, auch fremde Rechner) zählt übrigens für mich nicht, da ich zu, na sagen wir mal, mindestens 95% am *eigenen* Rechner sitze. Entweder zuhause, oder unterwegs am Notebook. Und da habe ich meine Arbeitsumgebung komplett unter Kontrolle. Insofern ist die Lösung mit dem Bookmark für mich vollkommen in Ordnung.

                Ciao,
                 Martin

                --
                Alkohl ist ungesund,
                Rauchen ist schädlich,
                Sex ist unanständig
                - und die Erde ist eine flache Scheibe.
                1. Hello,

                  Dein KO-Argument (viele verschiedene, auch fremde Rechner) zählt übrigens für mich nicht, da ich zu, na sagen wir mal, mindestens 95% am *eigenen* Rechner sitze. Entweder zuhause, oder unterwegs am Notebook. Und da habe ich meine Arbeitsumgebung komplett unter Kontrolle. Insofern ist die Lösung mit dem Bookmark für mich vollkommen in Ordnung.

                  Ich drängele auch gar nicht weiter. Ich weiß doch, dass die Moderatoren hier eigentlich extrem konservativ sind und das Internet und seine Techniken daher auch erst zu nächsten Jahrtausendwende akzeptieren werden, wenn es das Internet dann überhaupt noch gibt.

                  *scnr*

                  Liebe Grüße aus dem schönen Oberharz

                  Tom vom Berg

                  --
                  Nur selber lernen macht schlau
                  http://bergpost.annerschbarrich.de
          2. Hello,

            Dieser kleine chrirurgischer Eingriff in das Template für das Posting-Formular ist mMn nicht zuviel verlangt, oder?

            Also im Verhältnis zum Setzen eines Bookmarks ist der Aufwand ungleich höher, finde ich.[1]

            Ich verkneife mir jetzt besser die Sprüche zum logischen Denkvermögen von Frauen... ;-)

            Ich benutze das Self-Forum an vielen Orten und auf vielen fremden PCs. Die werden sich freuen, wenn ich immer erstmal meine Bookmarks dazulade.

            Eine Leistung sollte so vollständig sein, wie es möglich ist, auch wenn sie kostenlos angeboten wird. Ich glaube auch, dass meine Bitte nicht unverschämt war. Es ist nur ein klietzekleiner chirurgischer Eingriff notwendig, der sich lohnen wird.

            Liebe Grüße aus dem schönen Oberharz

            Tom vom Berg

            --
            Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de
        2. Hi,

          Ich wünsche mir daher schon seit langem einen Direktlink auf die Suche im Formular für den Post. Es ist immer lästig, erst wieder an den Anfang der Forumshauptdatei zurückblattern zu müssen usw.

          Dieser kleine chrirurgischer Eingriff in das Template für das Posting-Formular ist mMn nicht zuviel verlangt, oder?

          Der minimalinvasive Eingriff besteht darin, dass du in deinen Benutzereinstellungen ein kleines JavaScript einbindest, welches den entsprechenden Link generiert und ins Dokument einhängt.

          MfG ChrisB

          --
          Light travels faster than sound - that's why most people appear bright until you hear them speak.
          1. Hello,

            Der minimalinvasive Eingriff besteht darin, dass du in deinen Benutzereinstellungen ein kleines JavaScript einbindest, welches den entsprechenden Link generiert und ins Dokument einhängt.

            Gute Idee. Geht das denn tatsächlich?
            Werden die Ausgaben nicht in den HTML-Kontext gesetzt?

            Wo bringe ich das unter?
            "Eigene JS-Datei" könnte gehen und das Script dann auf dem Webserver parken.

            Muss ich doch glatt mal ausprobieren!

            Liebe Grüße aus dem schönen Oberharz

            Tom vom Berg

            --
            Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de
            1. Hi,

              Der minimalinvasive Eingriff besteht darin, dass du in deinen Benutzereinstellungen ein kleines JavaScript einbindest, welches den entsprechenden Link generiert und ins Dokument einhängt.

              Gute Idee. Geht das denn tatsächlich?

              Klar, wieso nicht?

              Werden die Ausgaben nicht in den HTML-Kontext gesetzt?

              Wie meinen?

              Wo bringe ich das unter?
              "Eigene JS-Datei" könnte gehen und das Script dann auf dem Webserver parken.

              Ja eben, dafür gibt's die Option ja - damit sich jeder, der will, sein eigenes (zusätzliches) JavaScript einbinden kann, dass ihm sinnvoll erscheinende Dinge mit den Forumsdokumenten macht - Ergänzungen, Löschungen, setzen von zusätzlichen Klassen, Eventhandlern ...

              MfG ChrisB

              --
              Light travels faster than sound - that's why most people appear bright until you hear them speak.
              1. Hello,

                Werden die Ausgaben nicht in den HTML-Kontext gesetzt?

                Wie meinen?

                ich buchstabiere nochmal:

                H T M L - K o n t e x t

                Das ist das, worum es hier immer in den PHP-Beiträgen geht, die htmlspecialchars() empfehlen gegen Cross-Site-Scripting und sonstige Manipulationen. Ich denke, dass das Forum dagegen immun ist.

                Wo bringe ich das unter?
                "Eigene JS-Datei" könnte gehen und das Script dann auf dem Webserver parken.

                Ja eben, dafür gibt's die Option ja - damit sich jeder, der will, sein eigenes (zusätzliches) JavaScript einbinden kann, dass ihm sinnvoll erscheinende Dinge mit den Forumsdokumenten macht - Ergänzungen, Löschungen, setzen von zusätzlichen Klassen, Eventhandlern ...

                Na, so klar ist das eben nicht gewesen, denn ich wollte ja eine Lösung für den Fall, dass ich NICHT am eigenen Arbeitsplatz sitze. Aber da die JS-Datei dann von meinem Webserver nachgeladen werden kann, könnte es funktionieren, wenn das die Policy des Browsers zulässt. Das weiß ich im Moment noch nicht.

                Liebe Grüße aus dem schönen Oberharz

                Tom vom Berg

                --
                Nur selber lernen macht schlau
                http://bergpost.annerschbarrich.de
                1. Hi,

                  Werden die Ausgaben nicht in den HTML-Kontext gesetzt?

                  Wie meinen?

                  ich buchstabiere nochmal:

                  H T M L - K o n t e x t

                  Das ist das, worum es hier immer in den PHP-Beiträgen geht, die htmlspecialchars() empfehlen gegen Cross-Site-Scripting und sonstige Manipulationen. Ich denke, dass das Forum dagegen immun ist.

                  Ja, aber welche "Ausgaben"?

                  Es wird lediglich ein externes Script über ein SCRIPT-Element im Head referenziert. Darin kannst du ausgeben/erzeugen, was immer du willst.
                  Und das stellt auch keine XSS-Lücke dar - schliesslich bindest du das Script selber und nur für dich ein, könntest dir also höchstens selber damit ins Knie schiessen, wenn du wolltest.

                  Na, so klar ist das eben nicht gewesen, denn ich wollte ja eine Lösung für den Fall, dass ich NICHT am eigenen Arbeitsplatz sitze. Aber da die JS-Datei dann von meinem Webserver nachgeladen werden kann, könnte es funktionieren, wenn das die Policy des Browsers zulässt. Das weiß ich im Moment noch nicht.

                  Sofern du nicht von irgendwelchen speziellen Umgebungen redest - ja klar, das funktioniert. Machen doch zig Werbeeinblendungsanbieter oder auch Googles Analytics ebenso.
                  Das Dokument selber "ruft" das Script auf - also hat dieses auch alle Rechte, die andere eingebundene Scripte ebenfalls haben.
                  Ich nehme an, du spielst auf sowas wie die Same Origin Policy an - aber die gilt nicht für die *Herkunft* eines Scriptes, sondern nur ("anschliessend") für den Kontext, in dem das Script läuft, und das ist das aktuelle Dokument.

                  MfG ChrisB

                  --
                  Light travels faster than sound - that's why most people appear bright until you hear them speak.
                  1. Hello,

                    Ja, aber welche "Ausgaben"?

                    Es wird lediglich ein externes Script über ein SCRIPT-Element im Head referenziert.

                    Davon war vorhin nicht die Rede. Dir Rede war davon in die persönloichen Einstellungen (also z.B. in der Grußformel) JavaScript-Code einzufügen. Und genaus _das_ dürfte nicht möglich sein.

                    Aber vielleicht gibt Du mir einen Hinweis, wie der JavaScript-Code aufgebaut sein müsste.
                    Es soll eine zusätzlich Node nach derjenigen mit der ID "bedienungshilfe" eingefügt werden, wenn die denn da ist.

                    Liebe Grüße aus dem schönen Oberharz

                    Tom vom Berg

                    --
                    Nur selber lernen macht schlau
                    http://bergpost.annerschbarrich.de
                    1. Hi,

                      Davon war vorhin nicht die Rede. Dir Rede war davon in die persönloichen Einstellungen (also z.B. in der Grußformel) JavaScript-Code einzufügen.

                      Nein, von "Code" war keine Rede.

                      Ich nahm an, dass du dort selber nachschaust, und siehst, dass der URL zu einem Script anzugeben ist :-)

                      MfG ChrisB

                      --
                      Light travels faster than sound - that's why most people appear bright until you hear them speak.
                      1. Hello,

                        Davon war vorhin nicht die Rede. Dir Rede war davon in die persönloichen Einstellungen (also z.B. in der Grußformel) JavaScript-Code einzufügen.

                        Nein, von "Code" war keine Rede.

                        Ich nahm an, dass du dort selber nachschaust, und siehst, dass der URL zu einem Script anzugeben ist :-)

                        Ach, red Dich doch jetzt nicht raus *tztz*

                        Liebe Grüße aus dem schönen Oberharz

                        Tom vom Berg

                        --
                        Nur selber lernen macht schlau
                        http://bergpost.annerschbarrich.de
                2. Hello,

                  Ok, Butter bei die Fische:

                  <p id="bedienungshilfe"><img src="http://src.selfhtml.org/dok.gif" width="15" height="10" alt="Seite"/>&nbsp;<a href="/hilfe/bedienung.htm#postings-formatieren">Forums-Hilfe, Formatierung von Postings</a></p>

                  Dieser Absatz steht wohl immer drin. Wie bekomme ich es jetzt hin, dass hinter dem Paragraph id="bedienungshilfe" per JavaScriot ein weiterer eingefügt wird mit meinem persönlichen Link?

                  irgendwie mit appendChild()?
                  Aber das würde den Knoten im übergeordneten Knoten einfügen.

                  Für JavaScript bin ich noch zu blöd. Kann mir da mal jemand einen Fahrplan geben, wie ich vorgehen muss?

                  Ich kenne also die ID des Elementes, _hinter_ dem ich ein ähnliches einfügen will. Wie geht das nun?

                  Liebe Grüße aus dem schönen Oberharz

                  Tom vom Berg

                  --
                  Nur selber lernen macht schlau
                  http://bergpost.annerschbarrich.de
                  1. Hello,

                    Hello,

                    http://de.selfhtml.org/javascript/objekte/node.htm#insert_before sieht schon ganz brauchbar aus. Gibt es denn kein insertBehind()?

                    Oder kann ich mir das bauen?

                    Irgendwie mit insertBefore.nextSibling oder so?

                    Liebe Grüße aus dem schönen Oberharz

                    Tom vom Berg

                    --
                    Nur selber lernen macht schlau
                    http://bergpost.annerschbarrich.de
                    1. [latex]Mae  govannen![/latex]

                      http://de.selfhtml.org/javascript/objekte/node.htm#insert_before sieht schon ganz brauchbar aus. Gibt es denn kein insertBehind()?

                      Oder kann ich mir das bauen?

                      Irgendwie mit insertBefore.nextSibling oder so?

                      So ähnlich. Der letzte Absatz der ersten Erläuterung sowie das folgende Beispiel beschreiben, wie es geht.
                      oder hier: insertBefore, ist nicht so verschwurbelt wie das SelfHTML-Beispiel

                      Cü,

                      Kai

                      --
                      „It's 106 miles to Chicago, we got a full tank of gas, half a pack of cigarettes, it's dark, and we're wearing sunglasses“.
                      „Hit it!“
                      Selfzeugs
                      SelfCode: sh:( fo:| ch:? rl:( br:< n4:( ie:{ mo:| va:) js:| de:> zu:) fl:( ss:| ls:?
                      1. Hello Kai,

                        Oder kann ich mir das bauen?

                        Irgendwie mit insertBefore.nextSibling oder so?

                        So ähnlich. Der letzte Absatz der ersten Erläuterung sowie das folgende Beispiel beschreiben, wie es geht.
                        oder hier: insertBefore, ist nicht so verschwurbelt wie das SelfHTML-Beispiel

                        Danke, ich versuche es mal.

                        Ich muss da wohl noch ein bisschen mehr bauen, denn der neue Knoten soll dann ja auch so ähnlich aussehen, wie der vorhandene.

                        Aber das werde ich wohl hinbekommen.

                        Also erst alles mit createElement() und mit createTextNode() bauen und dann aneinanderhängen und zum Schluss in die vorhandene Struktur einhängen, so wie die das in dem von Dir verlinkten Beispiel gezeigt haben. Ist das richtig so?

                        Bleibt dann nur noch die Frage, wie ich das triggere. Es kann ja erst eingebaut werden, wenn das Dokument fertig geladen ist.

                        Liebe Grüße aus dem schönen Oberharz

                        Tom vom Berg

                        --
                        Nur selber lernen macht schlau
                        http://bergpost.annerschbarrich.de
                        1. [latex]Mae  govannen![/latex]

                          Also erst alles mit createElement() und mit createTextNode() bauen und dann aneinanderhängen und zum Schluss in die vorhandene Struktur einhängen, so wie die das in dem von Dir verlinkten Beispiel gezeigt haben. Ist das richtig so?

                          Hört sich so an.

                          Bleibt dann nur noch die Frage, wie ich das triggere. Es kann ja erst eingebaut werden, wenn das Dokument fertig geladen ist.

                          z.B. Mit window.onload = toms_function;

                          function toms_function() {  
                           // Zusammenbauen und anhängen  
                          }
                          

                          Allerdings, falls onload mehrfach (z.B. vorher schon von anderen Scripts) benutzt wird, wird nur die Funktion aufgerufen, die im zeitlich letzten Aufruf zugewiesen wurde.

                          Dann kannst du die folgende Version nehmen...

                          addLoadEvent(toms_function);

                          /* addLoadEvent()  
                            Adds event to window.onload without overwriting currently assigned onload functions.  
                            Function found at Simon Willison's weblog - http://simon.incutio.com/  
                          */  
                          function addLoadEvent(func) {  
                            var oldonload = window.onload;  
                            if (typeof window.onload !== 'function') {  
                              window.onload = func;  
                            }  
                            else {  
                              window.onload = function () {  
                                oldonload();  
                                func();  
                              };  
                            }  
                          }
                          

                          ...oder deine Funktion als neues Event hinzufügen

                          addEvent(window, 'load', toms_function);

                          function addEvent(obj, ev_type, fn) {  
                          	if (!obj || typeof ev_type !== "string" || typeof fn !== "function") {  
                          		return;  
                          	}  
                          	if (obj.addEventListener) {  
                          		obj.addEventListener(ev_type, fn, false);  
                          	}  
                          	else if (obj.attachEvent) {  
                          		obj.attachEvent('on' + ev_type, function() {  
                          			return fn.call(obj, window.event);  
                          		});  
                          	}  
                          }
                          

                          Cü,

                          Kai

                          --
                          „It's 106 miles to Chicago, we got a full tank of gas, half a pack of cigarettes, it's dark, and we're wearing sunglasses“.
                          „Hit it!“
                          Selfzeugs
                          SelfCode: sh:( fo:| ch:? rl:( br:< n4:( ie:{ mo:| va:) js:| de:> zu:) fl:( ss:| ls:?
                          1. Hello,

                            das fängt ja gut an. Schon dieser einfache Test mit dem externen JavaScript will nicht so, wie ich wohl will. Nix passiert.

                            if (document.getElementById("bedienungshilfe"))
                                {
                                    alert('externes Javascript');
                                }

                            Das alert() alleine tut's aber erwartungsgemäß.
                            Hab ich einen Schreibfehler drin, den ich nicht sehe?

                            Liebe Grüße aus dem schönen Oberharz

                            Tom vom Berg

                            --
                            Nur selber lernen macht schlau
                            http://bergpost.annerschbarrich.de
                            1. Yerf!

                              Hab ich einen Schreibfehler drin, den ich nicht sehe?

                              Wenn das dein ganzer Code ist, dann besteht der "Schreibfehler" im Weglassen der "onload"-Sache...

                              Gruß,

                              Harlequin

                              --
                              <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
                              1. Hello,

                                Hab ich einen Schreibfehler drin, den ich nicht sehe?

                                Wenn das dein ganzer Code ist, dann besteht der "Schreibfehler" im Weglassen der "onload"-Sache...

                                Das habe ich hier weggelassen.
                                Etwas ausführlicher sah es so aus:

                                function test()
                                {
                                    if (document.getElementById("bedienungshilfe"))
                                    {
                                        alert('externes Javascript');
                                    }
                                }

                                window.onload = test();

                                Und den kaskadierten onlaod-Handler-Setter hatte ich auch schon.

                                Liebe Grüße aus dem schönen Oberharz

                                Tom vom Berg

                                --
                                Nur selber lernen macht schlau
                                http://bergpost.annerschbarrich.de
                                1. Hello,

                                  function test()
                                  {
                                      if (document.getElementById("bedienungshilfe"))
                                      {
                                          alert('externes Javascript');
                                      }
                                  }

                                  window.onload = test;

                                  Ok, so funktioniet es nun eigenwilligerweise seit dem letzten Post.
                                  Hatte ich vorher aber auch schon mindestens dreimal versucht.
                                  Ich verstehs nicht. Zwei Browser, IE 6.x und Firefox...

                                  Liebe Grüße aus dem schönen Oberharz

                                  Tom vom Berg

                                  --
                                  Nur selber lernen macht schlau
                                  http://bergpost.annerschbarrich.de
                                  1. Yerf!

                                    window.onload = test;

                                    Ok, so funktioniet es nun eigenwilligerweise seit dem letzten Post.

                                    Hm, so ist es auch richtig.

                                    Hatte ich vorher aber auch schon mindestens dreimal versucht.
                                    Ich verstehs nicht. Zwei Browser, IE 6.x und Firefox...

                                    Browsercache?

                                    Gruß,

                                    Harlequin

                                    --
                                    <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
                                2. Yerf!

                                  window.onload = test();

                                  Hm, einmal das übliche ;-)

                                  Du musst die Funtionsreferenz zuweisen, nicht die Funktion aufrufen und die Rückgabe zuweisen.

                                  window.onload = test;

                                  Gruß,

                                  Harlequin

                                  --
                                  <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
                            2. Nix passiert.

                              if (document.getElementById("bedienungshilfe"))

                              http://molily.de/js/einbindung.html#ereignisbasierung

                              Mathias

                        2. Hallo Tom,

                          Bleibt dann nur noch die Frage, wie ich das triggere. Es kann ja erst eingebaut werden, wenn das Dokument fertig geladen ist.

                          besser im SELF-Archiv suchen ;-)

                          Das Thema wurde hier schon öfter angesprochen, ich verlinke Dir einfach die passende Seite aus Felix' Fader-Framework-Artikel in SELFHTML aktuell.

                          Freundliche Grüße

                          Vinzenz

                  2. Wie bekomme ich es jetzt hin, dass hinter dem Paragraph id="bedienungshilfe" per JavaScriot ein weiterer eingefügt wird mit meinem persönlichen Link?

                    Hier wird die JavaScript-Bibliothek jQuery eingebunden. Das heißt, du musst nicht jegliches JavaScript zu Fuß erledigen, sondern kannst folgendes machen:

                    $(document).ready(function () {  
                       $('#bedienungshilfe').after('<p><a href="...">Dein Link</a></p>');  
                    });
                    

                    Mathias

                    1. Hello,

                      Wie bekomme ich es jetzt hin, dass hinter dem Paragraph id="bedienungshilfe" per JavaScriot ein weiterer eingefügt wird mit meinem persönlichen Link?

                      Hier wird die JavaScript-Bibliothek jQuery eingebunden. Das heißt, du musst nicht jegliches JavaScript zu Fuß erledigen, sondern kannst folgendes machen:

                      $(document).ready(function () {

                      $('#bedienungshilfe').after('<p><a href="...">Dein Link</a></p>');
                      });

                        
                      Danek für den Tipp.  
                        
                        
                      Liebe Grüße aus dem schönen Oberharz  
                        
                        
                      Tom vom Berg  
                      ![](http://selfhtml.bitworks.de/Virencheck.gif)  
                        
                      
                      -- 
                      Nur selber lernen macht schlau  
                      <http://bergpost.annerschbarrich.de>