Codeverbesserung (?)
Paul
- javascript
0 Felix Riesterer0 Paul0 suit0 Gunnar Bittersmann0 Paul
0 Vinzenz Mai0 Felix Riesterer0 Paul
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
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.
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
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?
(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
Um welches CMS geht es?
Contrexx
Sagt mir nichts, aber die Thumbs-Up-Tante auf der Website wirkt nicht seriös :D
Um welches CMS geht es?
ContrexxSagt mir nichts, aber die Thumbs-Up-Tante auf der Website wirkt nicht seriös :D
Aber ein Blickfang ist sie schon :-)
@@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'
Und
document.getElementById('intLink')
nicht zweimal aufs DOM loszulassen, ...
Stimmt
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
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.
Alles, was Du willst.
Das ist natürlich richtig. Danke!