<a> abhängig von id ansteuern
kointa
- javascript
0 frankx0 kointa
0 Felix Riesterer0 kointa
hi all,
ich habs endlich geschafft die id aus der url auszulesen und mit javaskript zu verarbeiten, jedoch bin ich mit der jetzigen lösung nicht zufrieden.
ich müsste für jeden vorhandenen link noch eine extra case anweisung schreiben, die dann die jeweilige funktion ausführt.
ich möchte jedoch dass abhängig von der ausgelesenen id direkt der zugehörige link ausgeführt wird:
die jetzige lösung sieht so aus:
<script type="text/javascript">
id='<?php echo $_GET['id'];?>';
if (id == '1')
{
flash("http://www.site.de/Games/roulette.swf");
}
</script>
kann ich nicht den links ala:
<p style="line-height:1.6em">
<a class="page" href="http://www.site.de/Games/roulette.swf?id=1" onclick="flash(this.href);return false">Roulette</a><br>
<a class="page" href="http://www.site.de/Games/schach.swf" onclick="flash(this.href);return false">Schach</a><br>
eine id zuweisen und dann durch die ausgelesene id den gewünschten link identifizieren und ausführen ?
wäre dankbar für jede hilfe.
danke !
grüße
Hellihello
Was willst Du denn erreichen? Wieso nimmst Du nicht den Link selbst? Wieso übergibts Du die ID an an den Server um sie dort per PHP via Javascript an den Client zurückzubeben?
Wenn es denn mit Javascript sein muss, dann könnte es sein, dass Du einmal zuviel den Server ansprichst.
Dank und Gruß,
Hellihello
Was willst Du denn erreichen? Wieso nimmst Du nicht den Link selbst? Wieso übergibts Du die ID an an den Server um sie dort per PHP via Javascript an den Client zurückzubeben?
Wenn es denn mit Javascript sein muss, dann könnte es sein, dass Du einmal zuviel den Server ansprichst.
Dank und Gruß,
ich möchte dass sich das spiel direkt mit der url startet also ich möchte direkt verlinken können.
wie könnte ich es noch realisieren ?
Liebe(r) kointa,
Du willst diverses auf einmal. Das ist nicht verkehrt, jedoch solltest Du in manchen Details etwas anders vorgehen.
<script type="text/javascript">
id='<?php echo $_GET['id'];?>';
if (id == '1')
{
flash("http://www.site.de/Games/roulette.swf");
}
</script>
Diese Funktion soll sofort beim Laden der Seite ausgeführt werden, obwohl die Seite noch nicht bis zum Ende geladen hat. Das ist potentiell gefährlich, da Dein Script auf Dinge zugreifen möchte, die noch nicht existieren.
Ich muss jetzt ein bisschen raten, da ich die Funktion flash() nicht kenne. Zuerst einmal initialisieren wir Deine Funktion erst nach dem vollständigen Laden der Seite:
<script type="text/javascript">
window.flashStarter = {
onLoad : function () {
// wird nach dem vollständigen Laden der Seite ausgeführt
var id = '<?php echo $_GET['id']; ?>';
// IDs für die Spiele definieren:
var games = new Array();
games[1] = "roulette";
games[2] = "schach";
games[3] = "poker";
// Spiel aufrufen
if (games[id])
flash("http://www.site.de/Games/"+games[id]+".swf");
},
init : function () {
// wird bereits beim Laden der Seite ausgeführt:
this.oldWinOnLoad = window.onload;
window.onload = function () {
if (typeof(window.flashStarter.oldWinOnLoad) == "function")
window.flashStarter.oldWinOnLoad();
window.flashStarter.onLoad();
};
}
};
window.flashStarter.init();
</script>
<a class="page" href="http://www.site.de/Games/roulette.swf?id=1" onclick="flash(this.href);return false">Roulette</a>
Besser wäre es, wenn die Funktion flash() in sich ein "return false" am Ende hätte, denn dann könntest Du die Links so gestalten: <a class="page" href="http://www.site.de/Games/roulette.swf?id=1" onclick="return flash(this.href);">Roulette</a>
.
Noch besser wäre es, wenn Du die JavaScript-Funktionalität mit diesem onclick erst von JavaScript selbst erzeugen lässt. Das soll heißen, dass Du im Quelltext der Seite überhaupt kein onclick notierst, sondern dass das die onLoad()-Funktion meines oben vorgeschlagenen flashStarter-Objektes tut. Das könnte so aussehen:
// das muss noch in die obige Funktion hinein:
var as = document.getElementsByTagName("a");
for (var i = 0; i < as.length; i++) {
// href checken, ob es auf eine Flash-Datei verweist
if (as[i].href && as[i].href.match(/\.swf$/))
as[i].onclick = "return flash(this.href);";
}
Mein Code ist ungeprüft! Hoffentlich hilft er.
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Liebe(r) kointa,
Du willst diverses auf einmal. Das ist nicht verkehrt, jedoch solltest Du in manchen Details etwas anders vorgehen.
<script type="text/javascript">
id='<?php echo $_GET['id'];?>';
if (id == '1')
{
flash("http://www.site.de/Games/roulette.swf");
}
</script>Diese Funktion soll sofort beim Laden der Seite ausgeführt werden, obwohl die Seite noch nicht bis zum Ende geladen hat. Das ist potentiell gefährlich, da Dein Script auf Dinge zugreifen möchte, die noch nicht existieren.
Ich muss jetzt ein bisschen raten, da ich die Funktion flash() nicht kenne. Zuerst einmal initialisieren wir Deine Funktion erst nach dem vollständigen Laden der Seite:
<script type="text/javascript">
window.flashStarter = {
onLoad : function () {
// wird nach dem vollständigen Laden der Seite ausgeführt
var id = '<?php echo $_GET['id']; ?>';// IDs für die Spiele definieren:
var games = new Array();
games[1] = "roulette";
games[2] = "schach";
games[3] = "poker";// Spiel aufrufen
if (games[id])
flash("http://www.site.de/Games/"+games[id]+".swf");
},init : function () {
// wird bereits beim Laden der Seite ausgeführt:
this.oldWinOnLoad = window.onload;
window.onload = function () {
if (typeof(window.flashStarter.oldWinOnLoad) == "function")
window.flashStarter.oldWinOnLoad();
window.flashStarter.onLoad();
};
}
};window.flashStarter.init();
> `</script>`{:.language-html}
>
> > <a class="page" href="http://www.site.de/Games/roulette.swf?id=1" onclick="flash(this.href);return false">Roulette</a>
>
> Besser wäre es, wenn die Funktion flash() in sich ein "return false" am Ende hätte, denn dann könntest Du die Links so gestalten: `<a class="page" href="http://www.site.de/Games/roulette.swf?id=1" onclick="return flash(this.href);">Roulette</a>`{:.language-html}.
>
> Noch besser wäre es, wenn Du die JavaScript-Funktionalität mit diesem onclick erst von JavaScript selbst erzeugen lässt. Das soll heißen, dass Du im Quelltext der Seite überhaupt kein onclick notierst, sondern dass das die onLoad()-Funktion meines oben vorgeschlagenen flashStarter-Objektes tut. Das könnte so aussehen:
>
> ~~~javascript
// das muss noch in die obige Funktion hinein:
> var as = document.getElementsByTagName("a");
> for (var i = 0; i < as.length; i++) {
> // href checken, ob es auf eine Flash-Datei verweist
> if (as[i].href && as[i].href.match(/\.swf$/))
> as[i].onclick = "return flash(this.href);";
> }
Mein Code ist ungeprüft! Hoffentlich hilft er.
Liebe Grüße aus Ellwangen,
Felix Riesterer.
VIELEN DANK für deine ausführliche Antwort.
Hat mir schonmal sehr geholfen !
meine flash funktion sieht folgendermaßen aus:
function flash(other)
{
if (screen.width >= 1280)
{
document.getElementById('player').innerHTML="<embed src='"+other+"' height='450' width='600' quality='high' scale='exactfit' menu='false' swLiveConnect='false' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash'></embed>";
window.scrollTo(0,150);
}
else
{
document.getElementById('player').innerHTML="<embed src='"+other+"' height='320' width='440' quality='high' scale='exactfit' menu='false' swLiveConnect='false' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash'></embed>";
window.scrollTo(0,150);
}
}
das mit dem games array ist eine sehr gute idee nur liegen leider nicht alle spiele auf meinem server, sodass die url manchmal eine andere ist.
ich werde deinen code mal einbauen, nur habe ich ja dann wieder eine doppelte lösung. also ich habe dann die <a> links auf die man von der siete aus zugreifen kann und eben die id in der url, die dann die spiele über die funktion startet.
kann ich nicht über eine funktion, die die id in der url kennt, das zugehörige <a> tag verwenden ?
dann müsste ich nicht bei jedem neuen spiel auch die funktion anpassen, verstehste wie meine ?
grüße
Liebe(r) kointa,
nur habe ich ja dann wieder eine doppelte lösung. also ich habe dann die <a> links auf die man von der siete aus zugreifen kann und eben die id in der url, die dann die spiele über die funktion startet.
wenn Du die Links ohne ID belässt, nach dem Laden der Seite dann eine JavaScript-Funktion ausführst, die die Links mit einer eindeutigen ID versieht (also die, die auf einen Flash-Film zeigen), dann kannst Du auch über die ID der <a>-Elemente gehen.
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Liebe(r) kointa,
nur habe ich ja dann wieder eine doppelte lösung. also ich habe dann die <a> links auf die man von der siete aus zugreifen kann und eben die id in der url, die dann die spiele über die funktion startet.
wenn Du die Links ohne ID belässt, nach dem Laden der Seite dann eine JavaScript-Funktion ausführst, die die Links mit einer eindeutigen ID versieht (also die, die auf einen Flash-Film zeigen), dann kannst Du auch über die ID der <a>-Elemente gehen.
Liebe Grüße aus Ellwangen,
Felix Riesterer.
naja ich will die links ja schon mit id versehen, damit man die adressse einfach kopieren kann.
ich habe deine code jetzt mal eingesetzt, aber er funktioniert nicht:
<script type="text/javascript">
window.flashStarter = {
onLoad : function () {
// wird nach dem vollständigen Laden der Seite ausgeführt
var id = '<?php echo $_GET['id']; ?>';
// IDs für die Spiele definieren:
var games = new Array();
games[1] = "roulette";
games[2] = "schach";
games[3] = "pong";
// Spiel aufrufen
if (games[id])
flash("http://www.choiz.extra.hu/Games/"+games[id]+".swf");
}
init : function () {
// wird bereits beim Laden der Seite ausgeführt:
this.oldWinOnLoad = window.onload;
window.onload = function () {
if (typeof(window.flashStarter.oldWinOnLoad) == "function")
window.flashStarter.oldWinOnLoad();
window.flashStarter.onLoad();
};
}
};
window.flashStarter.init();
</script>
was könnte der fehler sein ?
danke für dein bemühen !!!
grüße
Liebe(r) kointa,
ich habe deine code jetzt mal eingesetzt, aber er funktioniert nicht:
"funktioniert nicht" ist keine Problembeschreibung. Gibt es Fehlermeldungen? Was passiert genau?
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Liebe(r) kointa,
ich habe deine code jetzt mal eingesetzt, aber er funktioniert nicht:
"funktioniert nicht" ist keine Problembeschreibung. Gibt es Fehlermeldungen? Was passiert genau?
Liebe Grüße aus Ellwangen,
Felix Riesterer.
leider eben garnichts. wie kann ich genaueres rausfinden ?
ich benutze phase 5 html editor. es öffnet sich nichts.
genaueres kann ich leider nicht sagen !?
sry und danke