Olk Okenheld: Dateinamen dynamisch erzeugen...

Hi,

ich hab ein Problem, ich will den Dateinamen in einem Javascript dynamisch erzeugen, um so den Quelltext zu minimieren, allerdings weiß ich nicht genau wie das gehen soll.

Also ich hab folgendes...

var Ereignis=new Array()
Ereignis[01]="Verzeichnis/01.html"
Ereignis[02]="Verzeichnis/02.html"
Ereignis[03]="Verzeichnis/03.html"
Ereignis[04]="Verzeichnis/04.html"
Ereignis[05]="Verzeichnis/05.html"
Ereignis[06]="Verzeichnis/06.html"
Ereignis[07]="Verzeichnis/07.html"

der Wert für "Ereignis[x]" wird abgefragt, so dass der Wert, der als Dateiname eingesetzt werden soll bereits vorhanden ist, aber wie bringe den Wert an die Stelle?

Mir ist klar, dass ich eine Variabel "x" definieren muss, aber was weise ich der Variabel zu? und wie muss die Zeile dann aussehen, die die jeweilige Datei aufruft?

So vielleicht?:

Ereignis[x]="Verzeichnis/x.html"

danke im Vorraus.

Olk

  1. Also ich hab folgendes...

    var Ereignis=new Array()
    Ereignis[01]="Verzeichnis/01.html"
    Ereignis[02]="Verzeichnis/02.html"
    Ereignis[03]="Verzeichnis/03.html"
    Ereignis[04]="Verzeichnis/04.html"
    Ereignis[05]="Verzeichnis/05.html"
    Ereignis[06]="Verzeichnis/06.html"
    Ereignis[07]="Verzeichnis/07.html"

    Ist das array wirklich nötig?

    function getFile(monat)
    {
    monat = '00' + monat;
    return 'Verzeichnis/' + monat.substring(  monat.length - 2) + '.html';
    }

    würde vollkommen ausreichen.

    Struppi.

    1. Wenn ich das so änder, dann sieht das jetzt so aus...

      <script language="JavaScript" type="text/javascript">
      <!--

      var anfang  = new Date(2003,10,1,0,0,0);
      var ende    = new Date(2003,10,24,23,59,59);
      var aktuell = new Date();
      var Sekunden = aktuell.getSeconds();
      var Minuten = aktuell.getMinutes();
      var Stunden = aktuell.getHours();
      var Tag = aktuell.getDate();
      var Monat = aktuell.getMonth();
      var Jahr = aktuell.getYear();
      if(Jahr < 999) Jahr+=1900;

      function moreinfo(test){
      if (aktuell>=anfang){
       if (aktuell>=ende){
       window.location=monat;
       }
       else{
        if (Tag>=test){
        window.location=monat;
        }
        else
        alert("Du alter Pfuscher, jeden Tag nur ein Türchen ;-)")
       }
       }
      else
      alert("Du alter Pfuscher, jeden Tag nur ein Türchen ;-)")
      }

      function getFile(monat)
      {
      monat = '00' + monat;
      return 'Kalender/' + monat.substring(  monat.length - 2) + '.html';
      }

      // -->
      </script>

      und ich bekomm nur gesagt, dass ich nen Fehler hab...

      Ich finde den allerdings nicht.

      1. Nabend,

        und ich bekomm nur gesagt, dass ich nen Fehler hab...

        Und was sagt dir dein Browser mit vernünftiger JS-Konsole, wo sich dieser verbirgt oder was es für einer ist?

        Bis denne

        1. Hi,

          Nabend,

          Und was sagt dir dein Browser mit vernünftiger JS-Konsole, wo sich dieser verbirgt oder was es für einer ist?

          Das ist ja gerade das Problem, der IE 6.x meldet nur unten in der Statuszeile, dass ein Fehler auf der Seite ist und führt den Aufruf der Seite nicht aus (die ja dynamisch aufgerufen werden sollte) und der Netscape 7.x sagt nichts, macht aber auch nichts. Betroffen sind nur die Felder, die eine dynamische Zuweisung haben sollten, die Felder, bei denen die "moreinfo"-Funktion das alert-Fenster aufruft sind nciht betroffen, die wird ausgeführt.

          Olk

          1. Nabend,

            der IE 6.x

            Ich sprach ja auch von einem vernünftigen Browser, nicht von einem kompilierten Sicherheitsrisiko ;)
            Verwende zB Opera oder Mozilla, das sind wohl die besten.

            (der IE) meldet nur unten in der Statuszeile, dass ein Fehler auf der Seite ist

            Ganz genau kenne ich mich mit dem Ding nun auch nicht aus, aber er sollte doch wenigstens die Zeile sagen, die ihm nicht passt, oder? Hast du Script-Debugging aktiviert?

            Nach einem Weilchen Code-Studium bin ich mir nicht wirklich sicher, ob du wirklich
            window.location=monat;
            meinst und nicht
            window.location=getFile(monat);

            Bis denne,

            1. Hi,

              Nabend,

              Verwende zB Opera oder Mozilla, das sind wohl die besten.

              Ich hab ja auch den Netscape, der ja eigentlich ein Mozilla ist, aber der Spukt garnichts aus und der IE sagt leider nicht welche Zeile.

              Ganz genau kenne ich mich mit dem Ding nun auch nicht aus, aber er sollte doch wenigstens die Zeile sagen, die ihm nicht passt, oder? Hast du Script-Debugging aktiviert?

              Ja, hab es extra eingestellt, aber kein alert oder sowas, was mir eine Zeile ausspuckt.

              Nach einem Weilchen Code-Studium bin ich mir nicht wirklich sicher, ob du wirklich
              window.location=monat;
              meinst und nicht
              window.location=getFile(monat);

              Ich hab das jetzt auf getFile(monat); geändert, aber der Fehler belibt der gleiche, der Einwand war aber völlig richtig. Aber das scheint wohl nicht das Hauptproblem zu sein.

              Olk

              1. Nabend,

                Ich hab das jetzt auf getFile(monat); geändert, aber der Fehler belibt der gleiche, der Einwand war aber völlig richtig. Aber das scheint wohl nicht das Hauptproblem zu sein.

                Am besten wird es sein, wenn du uns ein Live-Beispiel dafür gibst, sprich poste einen Link, unter dem man sich das ganze einmal ansehen kann.

                Bis denne

                1. Hi,

                  Am besten wird es sein, wenn du uns ein Live-Beispiel dafür gibst, sprich poste einen Link, unter dem man sich das ganze einmal ansehen kann.

                  Ok, hier ist also der Link: http://www.huck-soft.de/Moiry/index4-5.html bei der jtzigen Einstellung sollten Die Türchen 1-23 zu öffnen sein, Türchen 24 müsste den alert ausführen.
                  Im übrigen kommt jetzt im Netz die Fehlermeldung auch beim IE nicht mehr, aber funktionieren tut es trotzdem nicht...

                  Danke Olk

                  1. Nabend,

                    Javascript URL thread: "javascript:moreinfo(01)"
                    Error:
                    name: ReferenceError
                    message: Statement on line 23: Reference to undefined variable: No such variable 'monat'
                    Backtrace:
                      Line 23 of inline#1 script in http://www.huck-soft.de/Moiry/index4-5.html
                        window.location = getFile(monat);
                      In unknown script
                        moreinfo(1);

                    Sagt mein Opera. Nachgeschaut: in der Tat, 'monat' existiert im Gegensatz zu 'Monat' nicht.
                    Zudem möchtest du bestimmt noch die Funktionsaufrufe in den richtigen Event-Hanlder setzen.

                    Bis denne,

                    1. Nachgeschaut: in der Tat, 'monat' existiert im Gegensatz zu 'Monat' nicht.
                      Zudem möchtest du bestimmt noch die Funktionsaufrufe in den richtigen Event-Hanlder setzen.

                      Als was müsste ich denn dann 'monat' deklarieren?

                      Olk

                      1. Als was müsste ich denn dann 'monat' deklarieren?

                        Ich hab jetzt 'monat' mit 'test' deklariert und die Abfrage auf 'getFile(test)' geändert, jetzt funktioniert es :-]

                        Olk

                  2. Hallo Olk,

                    Ok, hier ist also der Link: http://www.huck-soft.de/Moiry/index4-5.html

                    das ist kein Link, das ist eine URL (wie man hier Links macht steht auf </faq/#Q-19>) - außerdem wäre es nett, wenn du warnen würdest, wenn du eine große Seite angibst - das Bild hat nämlich 400kb.

                    bei der jtzigen Einstellung sollten Die Türchen 1-23 zu öffnen sein, Türchen 24 müsste den alert ausführen.

                    nö - wir haben nämlich erst den 23.11. :-)

                    Im übrigen kommt jetzt im Netz die Fehlermeldung auch beim IE nicht mehr, aber funktionieren tut es trotzdem nicht...

                    *grmpf* tritt den dämlichen IE doch endlich in die Tonne und teste mit einem Browser wie Mozilla oder Opera - Opera spuckt nämlich als Fehlermeldung folgendes aus, wenn ich auf das Türchen mit der 8 klicke:
                    --
                    message: Statement on line 23: Reference to undefined variable: No such variable 'monat'
                    Backtrace:
                      Line 23 of inline#1 script in http://www.huck-soft.de/Moiry/index4-5.html
                        window.location = getFile(monat);
                      In unknown script
                        moreinfo(8);
                    ---
                    Was bedeuten, dass es keine Variable namens 'monat' gibt - in deiner Funktion moreinfo() hast du nämlich nirgends eine Variable 'monat', willst aber der Funktion getFile() selbige übergeben. Du hast nur eine namens 'test', die vermutlich das enthält, was du an die Funktion getFile() übergeben willst.

                    Grüße aus Nürnberg
                    Tobias

                    --
                    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
                    1. Hi,

                      das ist kein Link, das ist eine URL

                      sorry, hab ich nicht beachtet

                      außerdem wäre es nett, wenn du warnen würdest, wenn du eine große Seite angibst

                      Noch ein Sorry, ich hab das falsche Bild hochgeladen, das andere wäre nicht so groß gewesen...

                      bei der jtzigen Einstellung sollten Die Türchen 1-23 zu öffnen sein, Türchen 24 müsste den alert ausführen.
                      nö - wir haben nämlich erst den 23.11. :-)

                      Doch, denn ich hab den Kalender auf den 1.11.2003 eingestellt...

                      Was bedeuten, dass es keine Variable namens 'monat' gibt - in deiner Funktion moreinfo() hast du nämlich nirgends eine Variable 'monat', willst aber der Funktion getFile() selbige übergeben. Du hast nur eine namens 'test', die vermutlich das enthält, was du an die Funktion getFile() übergeben willst.

                      Das heißt ich muss was genau machen?

                      Sorry, aber ich blick es gerade nicht... :-(

                      Olk

          2. Hallo Olk,

            Das ist ja gerade das Problem, der IE 6.x meldet nur unten in der Statuszeile, dass ein Fehler auf der Seite ist und führt den Aufruf der Seite nicht aus

            Nein, das ist kein Problem. Ein Doppelklick auf das gelbe Warndreieck hätte dir ein Fenster mit Fehlerdetails geöffnet. Ist zwar kein so komfortabler Debugger wir der in Mozilla eingebaute, aber er hätte dir zumindest den ersten Fehler, der zum Abbruch des Scriptes geführt hat, angezeigt.

            Grüße
            Torsten

      2. Wenn ich das so änder, dann sieht das jetzt so aus...

        sorry, aber du bist etwas nachlässig mit dem durchlesen der Dokumentationen.

        also erstmal willst du dich schlau machen wie du Fehler findest: <http//glasgoogle.de>

        <script language="JavaScript" type="text/javascript">
        <!--

        var anfang  = new Date(2003,10,1,0,0,0);
        var ende    = new Date(2003,10,24,23,59,59);
        var aktuell = new Date();
        var Sekunden = aktuell.getSeconds();
        var Minuten = aktuell.getMinutes();
        var Stunden = aktuell.getHours();

        Wofür brachst du die Sekunden, Stunden und Minuten?

        var Tag = aktuell.getDate();
        var Monat = aktuell.getMonth();
        var Jahr = aktuell.getYear();
        if(Jahr < 999) Jahr+=1900;

        nimm einfach getFullYear() http://selfhtml.teamone.de/javascript/objekte/date.htm#get_full_year

        function moreinfo(test){
        if (aktuell>=anfang){
        if (aktuell>=ende){
        window.location=monat;
        }
        else{
          if (Tag>=test){
          window.location=monat;
          }
          else
          alert("Du alter Pfuscher, jeden Tag nur ein Türchen ;-)")
        }
        }
        else
        alert("Du alter Pfuscher, jeden Tag nur ein Türchen ;-)")
        }

        hmmm???
        Ich weiß zwar nicht was in test steht, aber evtl. meinst du:

        function moreinfo(test){

        if(aktuell < anfang || aktuell > ende || test > Tag) return alert(....);
        window.location.href = getFile(test);

        }

        Struppi.