Autor |
Nachricht |
WurstOderWas
Threadersteller
Dabei seit: 26.03.2003
Ort: -
Alter: 43
Geschlecht:
|
Verfasst Di 03.05.2005 12:18
Titel [JavaScript] setTimeout- Problem |
|
|
Hi Leute,
mit folgendem Script möchte ich ein Bannerrotating schreiben, dass mir nach und nach die Banner wie an einem Laufband anzeigt. Funktioniert soweit auch, aaaber wenn ich das ganze jetzt via JavaScript zeitverzögert durchlaufen lassen will, dann öffnet mir die Funktion ein neues Fenster, in dem dann nur die Banner zu sehen sind.
Will ja aber, dass nur die Banner einmal weiterdrehen und die Seite erhalten bleibt. Jemand ne Idee?
Code: | <script language="JavaScript">
function bannerrotate(zaehler){
for(i=0;i<5;i++){
if((i+zaehler)>=<?echo $count?>){
zaehler = 0;
}
if(bannerarray[i+zaehler]){
document.write(bannerarray[i+zaehler]);
zaehler++;
}
}
setTimeout("bannerrotate(1)", 3000);
}
bannerrotate(0);
</script> |
Gruß,
Wursti
Zuletzt bearbeitet von WurstOderWas am Di 03.05.2005 12:25, insgesamt 1-mal bearbeitet
|
|
|
|
|
way2hot
Dabei seit: 14.03.2004
Ort: Jüchen-Gierath
Alter: 41
Geschlecht:
|
Verfasst Di 03.05.2005 12:30
Titel
|
|
|
Ist zwar jetzt um einiges mehr Script, aber das generiert dir eine Art DiaShow, welche die vordefinierten Bilder (wenn gewünscht auch mit Transition -> IE) austauscht.
Code: | <!-- configurable script -->
<SCRIPT LANGUAGE="JavaScript">
theimage = new Array();
///// Configurable Variables
// The dimensions of ALL the images should be the same or some of them may look stretched or reduced in Netscape 4.
// Format: theimage[...]=[name/description, image_src, linking_url]
//Hier Bildernamen plus Ordnerhierarchie eingeben!!!!
theimage[0]=["", "images/slideshow/slide01.jpg", ""];
theimage[1]=["", "images/slideshow/slide02.jpg", ""];
theimage[2]=["", "images/slideshow/slide03.jpg", ""];
theimage[3]=["", "images/slideshow/slide04.jpg", ""];
theimage[4]=["", "images/slideshow/slide05.jpg", ""];
///// Plugin variables
playspeed=5000;// The playspeed determines the delay for the "Play" button in ms
dotrans=1; // if value = 1 then there are transitions played in IE
transtype='blendTrans';// 'blendTrans' or 'revealtrans'
transattributes='duration=2,transition=12';// duration=seconds,transition=#<24
randomorder=0;
linksperline=4; // For the text links
playdiffernce=500; // The speed that the autplay speed is changed by
autostart=1;
preloadslides=1;
</SCRIPT>
<!-- end of configurable script -->
<!-- plugin scripts -->
<SCRIPT>
// Preloader
function preloadSlide() {for(k=0;k<til;k++) {theimage[k][1]=new Image().src=theimage[k][1];}}
// Add extra functions between the {} if you need other functions that require the onload
window.onload=function(){
if(window.preloadslides)preloadSlide();if(window.autostart)slidePlay();}
// NS4 resize handler
window.onresize=function(){
if(document.layers)this.location=this.location;}
</SCRIPT>
<!-- end of plugin scripts -->
<!-- slide show HTML -->
<FORM NAME="slideshow">
<DIV ALIGN="CENTER">
<SCRIPT>document.write('<IMG NAME="slideimage" STYLE="filter:'+transtype+'('+transattributes+');" SRC="'+theimage[0][1]+'" BORDER=0>')</SCRIPT>
</DIV>
</FORM>
<!-- end of slide show HTML -->
<!-- fixed script -->
<SCRIPT>
///// DO NOT EDIT THIS SCRIPT
with(document){i=0,play=0,di=images,dl=links,form=slideshow,til=theimage.length}
function slideImage(num) {
// Required Script
i=num%til;if(i<0)i=til-1;
if(document.all&&dotrans==1)eval('di.slideimage.filters.'+transtype+'.apply()')
di.slideimage.src=theimage[i][1];
if(document.all&&dotrans==1)eval('di.slideimage.filters.'+transtype+'.play()')
// Plug-in handlers
if(form.theimages)form.theimages.selectedIndex = i;
if(form.slidebox)form.slidebox.value = theimage[i][0];
if(form.slidecount)form.slidecount.value = "Image "+(i+1)+" of "+til;
if(form.slidespeed)doSpeed(0);}
function slidePlay() {
if (!window.playing) {
slidePlaying(i+1);
if(form.play)form.play.value=" Anhalten ";}
else {playing=clearTimeout(playing);
if(form.play)form.play.value=" Abspielen ";}
if(di.imgPlay){setTimeout('di.imgPlay.src="'+imgStop+'"',1);imgStop=di.imgPlay.src}}
function slidePlaying(num) {
playing=setTimeout('slidePlaying(i+1);slideImage(i+1);', playspeed);}
slideImage(0);
</SCRIPT>
<!-- end of fixed script --> |
Ursprünglich haste da auchnoch Buttons drunter, um selber weiter zu blättern, aber die hab ich für meinen Zweck rausgelöscht. Daher sind aber in dem script noch ein paar der Funktionen drin, also nicht verwirrt sein...
|
|
|
|
|
Anzeige
|
|
|
WurstOderWas
Threadersteller
Dabei seit: 26.03.2003
Ort: -
Alter: 43
Geschlecht:
|
Verfasst Di 03.05.2005 12:36
Titel
|
|
|
Das Array meiner Variablen wurde vorher schon beschrieben.
Das funktioniert ja auch alles.
Das Problem ist das Öffnen in einem neuen Fenster.
Soll doch im eigenen Fenster bleiben.
|
|
|
|
|
freaknerd
Dabei seit: 03.05.2005
Ort: Owschlag
Alter: 49
Geschlecht:
|
Verfasst Di 03.05.2005 12:41
Titel POste doch mal das vollständige Script |
|
|
Hallo Flo, poste doch mal das vollständige Script mit der Arraydefinition und so. Dann kann man der Sache auch näher kommen.
Gruß
Carsten
|
|
|
|
|
WurstOderWas
Threadersteller
Dabei seit: 26.03.2003
Ort: -
Alter: 43
Geschlecht:
|
Verfasst Di 03.05.2005 12:49
Titel
|
|
|
Hi Carsten,
Code: | <script language="JavaScript">
var bannerarray = new Array(<?echo $count;?>);
</script>
<?
for ($p=0;$p<$count;$p++)
{
?>
<script language="JavaScript">
bannerarray[<?echo $p;?>] = "<td align=center valign=middle width=<?echo $tdwidth?>%><a href=../dateien/page_bottom_click.php?ID=<?echo $ban[$p]['id'];?> target=_blank><img src=../dateien/includes/module/uploads/<?echo $ban[$p]['banner_pic'];?> border=0 alt=<?echo $ban[$p]['banner_title'];?>></a></td>";
</script>
<?
}
?>
<script language="JavaScript">
function bannerrotate(zaehler){
for(i=0;i<5;i++){
if((i+zaehler)>=<?echo $count?>){
zaehler = 0;
}
if(bannerarray[i+zaehler]){
document.write(bannerarray[i+zaehler]);
zaehler++;
}
}
setTimeout("bannerrotate(1)", 3000);
}
bannerrotate(0);
</script> |
Tjoa, also so sieht im Groben der Code aus.
Vorher finden natürlich noch Datenbankabfragen statt, aber die funktionieren und sind irrelevant.
Die Rotationsfunktion funktioniert ja auch eigentlich, nur wird halt ein neues Fenster geöffnet.
coole neue Seite übrigens
Zuletzt bearbeitet von WurstOderWas am Di 03.05.2005 12:49, insgesamt 1-mal bearbeitet
|
|
|
|
|
freaknerd
Dabei seit: 03.05.2005
Ort: Owschlag
Alter: 49
Geschlecht:
|
Verfasst Di 03.05.2005 13:19
Titel document.write() |
|
|
Hallo Flo,
das Problem ist das document.write(); Mit diesem Befehl wird alles im Document überschrieben. D.h. auch Header, deine Tabelle und alles was so um die Banner rum ist. Das sieht dann aus wie ein neues Fenster.
Du solltest da den Ansatz vielleicht nochmal überdenken.
Option1: Für die Banner (falls Sie ein einheitliches Format haben) einen Platzhalter blank.gif mit der entsprechenden Größe einsetzen und dann einfach mit der timeOut() Funktion einen Bildwechsel vornehmen und die Verlinkung in einer Variable anpassen.
Option2: Falls Du noch Bewegung haben möchtest, mußt Du einen Layer als Maske (overflow:hidden) über den Bannerlayer legen und den Bannerlayer dann darunter animieren. Dann müsstest Du allerdings die Banner alle im Hintergund schon laden.
|
|
|
|
|
caZpa
Account gelöscht
Ort: -
|
Verfasst Di 03.05.2005 13:33
Titel
|
|
|
genau.
nich das ganze dokument neu beschreiben.
definiere den teil der beschrieben werden soll.
z.b.
<td name="banner">
dann
banner.write(...)
müsste eigentlich klappen
|
|
|
|
|
way2hot
Dabei seit: 14.03.2004
Ort: Jüchen-Gierath
Alter: 41
Geschlecht:
|
Verfasst Di 03.05.2005 13:49
Titel
|
|
|
caZpa hat geschrieben: | genau.
nich das ganze dokument neu beschreiben.
definiere den teil der beschrieben werden soll.
z.b.
<td name="banner">
dann
banner.write(...)
müsste eigentlich klappen |
Klappt das auch, wennman das dirkt auf ein Bild anwendet? Denn dann könnte er das ja dann genauso machen. Also:
Code: | <img src="banner.gif" name="banner">
banner.write() |
|
|
|
|
|
|
|
|
Ähnliche Themen |
[javascript] setTimeout?
problem mit setTimeout: angezeigte seite wird überschrieben
setTimeout ausführen bei mouseover
[JS] setTimeout einmal und dann nie wieder?
SetTimeout bei Mouseout löschen und bei Mouseover setzen
Mit Hilfe von setTimeout auf Seite davor gelangen...
|
|