Javascript / PHP Diashow
Gerrit
- javascript
Hiho,
ich versuche mich gerade an einer Diashow, allerdings habe ich javascript noch nie benutzt. Ich habe eine Seite auf der sich ein Bild befindet(zB http://www.scareyourfriends.de/v3/de/index.php?action=bigsize&id=64 ) welches einem Album angehört und ich würde gerne per knopfdruck eine Diashow starten, bzw unterbrechen. Da sich alle Bilder aller Alben im selben ordner befinden kann ich nicht einfach ein verzeichnis auslesen und wiedergeben. Daher hab ich mir aus diversen Scripten versucht etwas anzueignen, allerdings funktioniert es leider nicht. Das hier hab ich soweit:
<?php
echo "<script type="text/javascript">";
$pics = mysql_query("SELECT Bild FROM ".$table_inhalt." ORDER BY id ASC;") OR die (mysql_error());
echo "var fotos = new Array();";
$by = "0";
while ($row = mysql_fetch_assoc($pics))
{
echo "fotos[".$by."]="gfx/pics/".$row['Bild']."";";
$by++;
}
echo "var speed=5000;
var pos=0;
function doit ()
{
if (!(document.images)) {return;}
document.bild.src=fotos[pos++];
if (pos == fotos.length) { pos = 0; }
setTimeout(doit();,speed);
}
</script>";
?>
Bitte bedenkt, dass ich kein/kaum java beherrsche.
Das soll einfach erstmal das Bild wechseln, hab es brav bild benannt, aber es tut sich nichts.
Hi,
[...] allerdings funktioniert es leider nicht.
Das ist keine Fehlerbeschreibung. Was heißt "es funktioniert nicht"?
Welches Verhalten erwartest du und was passiert tatsächlich?
Welche Fehlermeldungen gibt es (in der Fehlerkonsole z.B. im Firefox unter Extras -> Fehler-Konsole)?
Das hier hab ich soweit:
Wenn du einen Fehler im Javascript-Code (Clientseitig) hast erschwert es nur unnötig das Verstehen deines Problems, wenn du auch noch den serverseitigen (hier PHP) Code postest.
<?php
echo "<script type="text/javascript">";
$pics = mysql_query("SELECT Bild FROM ".$table_inhalt." ORDER BY id ASC;") OR die (mysql_error());
echo "var fotos = new Array();";
$by = "0";
while ($row = mysql_fetch_assoc($pics))
{
echo "fotos[".$by."]="gfx/pics/".$row['Bild']."";";
Du kannst statt ""..." auch '"...' das macht den Code leichter zu lesen.
$by++;
}echo "var speed=5000;
var pos=0;function doit ()
Ob hier ein Leerzichen nach doit stehen darf weiß ich grad nicht auswendig.
{
if (!(document.images)) {return;}document.bild.src=fotos[pos++];
if (pos == fotos.length) { pos = 0; }
setTimeout(doit();,speed);
setTimeout() erwartet als erstes Argument einen String mit dem Funktionsnamen, der aufgerufen werden soll (hier wäre das dann "doit()" oder hier einfacher 'doit()') und nach dem ersten Argument keinen Strichpunkt.
}
</script>";
?>Bitte bedenkt, dass ich kein/kaum java beherrsche.
Das macht nichts, da Java und Javascript zwei unterschiedliche Sachen sind.
mfG,
steckl
Hi,
function doit ()
Ob hier ein Leerzichen nach doit stehen darf weiß ich grad nicht auswendig.
es darf. Üblicherweise wird es allerdings in Styleguides untersagt.
setTimeout() erwartet als erstes Argument einen String mit dem Funktionsnamen, der aufgerufen werden soll (hier wäre das dann "doit()" oder hier einfacher 'doit()')
window.setTimeout() erwartet als erstes Argument eine Funktionsreferenz oder einen String, der ausführbaren Code enthält. Ein String mit dem Funktonsnamen wäre übrigens "doit", nicht "doit()"; der String muss zudem erst umständlich zu einer Funktionsreferenz umgewandelt werden, damit der JavaScript-Prozessor sie ausführen kann.
Warum sollte 'doit()' eigentlich einfacher sein als "doit()"?
Cheatah
Also das Script soll eine Bild source ändern, und das alle 5 sekunden. Das ursprüngliche Script entstammt http://www.brauchbar.de/wd/artikel/47.html , aber es liest eben keine mysql tabelle aus, wenn es das könnte wäre schön. die Doit lese ich wie auf der seite beschrieben als onload befehl im body tag aus, kann ich das alternativ auch per onclick befehl machen? und so auch unter umständen eine play/pause taste machen?
Hi,
Also das Script soll [...]
ja, soweit hatte ich es schon verstanden.
die Doit lese ich wie auf der seite beschrieben als onload befehl im body tag aus, kann ich das alternativ auch per onclick befehl machen?
Warum möchtest Du Dein Konzept ändern, anstatt Deinen einfachen Fehler zu beheben?
und so auch unter umständen eine play/pause taste machen?
Das kannst Du auch mit dem bestehenden Konzept.
Cheatah
Hi,
Warum sollte 'doit()' eigentlich einfacher sein als "doit()"?
Nicht in Javascript, aber wenn es der OP in den bisher verwendeten PHP-Code einbauen will spart er sich das Maskieren der Anführungszeichen.
mfG,
steckl
Hi,
Warum sollte 'doit()' eigentlich einfacher sein als "doit()"?
Nicht in Javascript, aber wenn es der OP in den bisher verwendeten PHP-Code einbauen will spart er sich das Maskieren der Anführungszeichen.
ah, das ist tatsächlich ein guter Grund.
Cheatah