Paul: Codeverbesserung (?)

Moin,
um dem Benutzer einer Website einen Zufallslink anzubieten, habe ich folgendes gemacht:

    var links = new Array(  
      'toller Link?page=279',  
      'noch tollerer Link?page=291',  
      'naja?page=280',  
      'letzter Link?page=5'  
    );  
  
  
    var a = parseInt(Math.random() * links.length);  
    var link = links[a].split("?");  
  
    document.getElementById('intLink').innerHTML = link[0];  
    document.getElementById('intLink').href = 'index.php?'+link[1];

Der 'intLink' ist ein <a>.
Läuft alles wunderbar. Aber vielleicht kann ich daran was besser machen? Oder ist dagegen nichts einzuwenden?

Paul
PS: keine serverseitige Möglichkeit

  1. Lieber Paul,

    wie passt "index.php?page=1234" mit

    PS: keine serverseitige Möglichkeit

    zusammen??

    Meines Erachtens ist diese ?page=1234-URL-Geschichte keine besonders suchmaschinenfreundliche Lösung. Nach meiner Erfahrung ist es sinnvoller, eine "sprechende URL" zu haben, die intern dann z.B. mittels mod_rewrite in Deinen page-Parameter umgewandelt wird. Oder Du machst es eben noch anders.

    var links = new Array(

    'toller Link?page=279',
          'noch tollerer Link?page=291',
          'naja?page=280',
          'letzter Link?page=5'
        );

      
    Warum die Links nicht als Objekt?  
      
    ~~~javascript
    var l = [  
        { name: "toller Link",        page: 279 },  
        { name: "noch tollerer Link", page: 291 },  
        { name: "naja",               page: 280 },  
        { name: "letzter Link",       page: 5 }  
    ];
    

    Du kannst dann diesen Code

    ~~~javascript

    var a = parseInt(Math.random() * links.length);

    var link = links[a].split("?");

    document.getElementById('intLink').innerHTML = link[0];
        document.getElementById('intLink').href = 'index.php?'+link[1];

    dadurch ersetzen:  
      
    ~~~javascript
    var a = Math.floor(Math.random() * l.length);  
    var lnk = document.getElementById("intLink");  
      
    lnk.innerHTML = l[a].name;  
    lnk.href = "index.php?page=" + l[a].page;
    

    Wie man mit Zufallszahlen umgeht, steht bei SELFHTML: Gleichverteilte Zufallszahlen erzeugen.

    Die Variablennamen "link" und "links" sind meines Wissens nicht unproblematische Namen, die Du in Deinem Code besser nicht als lokale Variablennamen deklarieren sollest. Ich kenne jetzt zwar kein Beispiel, aber das Syntaxhighlighting zeigt "link" oder "links" mit einer anderen Farbe an, als beispielsweise "l" oder "a".

    Auch wenn Dein Code grundsätzlich stabil funktioniert, so würde ich mir doch in Sachen Erweiterbarkeit die Notation mit Objekte-in-einem-Array angewöhnen, damit eine solche Linkliste vielleicht einmal später als nachladbares JavaScript per PHP generiert werden kann.

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. wie passt "index.php?page=1234" mit

      PS: keine serverseitige Möglichkeit
      zusammen??

      Meines Erachtens ist diese ?page=1234-URL-Geschichte keine besonders suchmaschinenfreundliche Lösung.

      Hast ja recht. Allerdings wird die Homepage durch ein CMS gemanaged, wodurch die php-Seiten kommen. Ich muss das "drumrumprogrammieren" mit JS machen (bitte kein Kommentar. Ist halt so vorgegeben).

      Warum die Links nicht als Objekt? ... damit eine solche Linkliste vielleicht einmal später als nachladbares JavaScript per PHP generiert werden kann.

      Nur deshalb oder gibt's noch andere Vorteile bei Objekten (in diesem Beispiel)?

      Wie man mit Zufallszahlen umgeht, steht bei SELFHTML: Gleichverteilte Zufallszahlen erzeugen.

      Reicht mir schon so wie ich es hab.

      Die Variablennamen "link" und "links" sind meines Wissens nicht unproblematische Namen...

      Danke

      Paul

      1. Hast ja recht. Allerdings wird die Homepage durch ein CMS gemanaged, wodurch die php-Seiten kommen. Ich muss das "drumrumprogrammieren" mit JS machen (bitte kein Kommentar. Ist halt so vorgegeben).

        Meine Erfahrung hat gezeigt, dass 95% der "geht nicht, weil CMS"-Fälle einfach nur eine schlechte Entschuldigung sind.

        Um welches CMS geht es?

        1. (bitte kein Kommentar. Ist halt so vorgegeben).

          Meine Erfahrung hat gezeigt, dass 95% der "geht nicht, weil CMS"-Fälle einfach nur eine schlechte Entschuldigung sind.

          Mag sein :-)

          Um welches CMS geht es?

          Contrexx

          1. Um welches CMS geht es?
            Contrexx

            Sagt mir nichts, aber die Thumbs-Up-Tante auf der Website wirkt nicht seriös :D

            1. Um welches CMS geht es?
              Contrexx

              Sagt mir nichts, aber die Thumbs-Up-Tante auf der Website wirkt nicht seriös :D

              Aber ein Blickfang ist sie schon :-)

      2. @@Paul:

        nuqneH

        Reicht mir schon so wie ich es hab.

        Ähm, du hattest nach Verbesserungen gefragt. Math.floor() statt parseInt() zu verwenden dürfte eine Verbesserung sein; das Argument ist ja schließlich schon ein numerischer Wert.

        Und document.getElementById('intLink') nicht zweimal aufs DOM loszulassen, sondern die einmal gefundene Referenz auf das Elementobjekt in einer Variablen zu spreichern, dürfte auch eine Verbesserung sein.

        Qapla'

        --
        Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
        (Mark Twain)
        1. Und document.getElementById('intLink') nicht zweimal aufs DOM loszulassen, ...

          Stimmt

      3. Hallo Paul,

        Wie man mit Zufallszahlen umgeht, steht bei SELFHTML: Gleichverteilte Zufallszahlen erzeugen.
        Reicht mir schon so wie ich es hab.

        ich erhalte den Eindruck, dass Du überhaupt nicht an Codeverbesserung interessiert bist. Warum hast Du denn gefragt?

        Freundliche Grüße

        Vinzenz

      4. Lieber Paul,

        Warum die Links nicht als Objekt? ... damit eine solche Linkliste vielleicht einmal später als nachladbares JavaScript per PHP generiert werden kann.
        Nur deshalb oder gibt's noch andere Vorteile bei Objekten (in diesem Beispiel)?

        Du kannst ohne komplexes "Aufspalten" (wie z.B. an Deinem Fragezeichen) verschiedene Eigenschaften an den Link hängen. Neben "name" könnte ich mir noch ein "title" vorstellen, welcher dem <a>-Element verpasst wird. Auch onclick-Funktionen und className sind so möglich. Alles, was Du willst.

        Liebe Grüße,

        Felix Riesterer.

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

          Das ist natürlich richtig. Danke!