# Bilder wechseln



## karldetlef (21. September 2002)

Ich hab hier ein Script...:

```
<script language="Java Script">
var images = new Array();

images[0] = "image1.gif"; 
images[1] = "image2.gif";
images[2] = "image3.gif";

function ShowImg() {
var number = images.length;
var increment = Math.floor(Math.random() * number);
var strTemp ='<img src="' + images[increment] + '">';
document.write(strTemp);
}

var rotate = 5000; 
var count = 0;

function RotateImg(myImage){
 myImage.src=images[count];
 count++;
 if(count==images.length){count = 0;}
 setTimeout("RotateImg(myImage)",rotate);
} 
</scrip t>
```
Es zeigt aber dann immer Fehler an, und zwar in der Zeile wo das

 myImage.src=images[count];

is.
Die Bilder sollen so 

```
<script language="javascript">ShowImg();</scrip t>
```
eingebunden werden.
Tja, bringt alles nix, wenn da ein Fehler is bei dem myImage.src...
Kann mir jemand helfen is echt wichtig für meinen Bruder, der macht grad ne hp =)
Frag mich nich, warum dass so dumm angezeigt wird, ich habs geschlossen, ging aber irgendwie nicht, ich habs probiert... =(

[edit by Dunsti]
ok, es lag an dem Script-Ende-Tag, warum der das nicht richtig dargestellt hat. Einfach das Leerzeichen zwischen "scrip" und "t" wegdenken  
[/edit]


----------



## Dunsti (21. September 2002)

ich denke mal, das liegt an dem "myImage" ... das kannst Du so nicht ansprechen.

probiers mal mit 

document.all.myImage.src = image[count];


bin mir aber nicht sicher.

Aber wenn es so geht, dann nur im IE, weil im NN die Objekte anders angesprochen werden 


Dunsti


----------



## Adam Wille (21. September 2002)

Hy,

also ich versteh erstens nicht, dass myImagen ja gar nicht deklariert wurde als neues Image-Objekt des Dokumentes, sollte ja aber per

```
myImage = new Image();
```
problemlos gelöst werden können.

Zweitens wird die Funktion RotateImg() nirgends initiiert, nur als solche definiert.

Drittens ist die Einleitung der Script invalide, besser:

```
<script type="text/javascript">
```
Viertens weiß ich nicht so genau, ob innerhalb einer Funktion diese Funktion selbst per setTimeout() eingebunden werden kann.

Fünftens: Für den NN einfach in "document.all.images..." das "all" rauslassen. 

Geist


----------



## THE REAL TOOLKIT (21. September 2002)

Viertens weiß ich nicht so genau, ob innerhalb einer Funktion diese Funktion selbst per setTimeout() eingebunden werden kann.

->das geht schon


----------



## karldetlef (21. September 2002)

Und Fünftens hab ich recht wenig Ahnung von Java...!
Ich kapier nicht genau was ihr von mir wollte, könnt ihr das nicht kurz einbinden?  

THX


----------



## Adam Wille (21. September 2002)

```
<script type="text/javascript">
var images = new Array();
var rotate = 5000; 
var count = 0;

images[0] = "image1.gif"; 
images[1] = "image2.gif";
images[2] = "image3.gif";

myImage = new Image();

function RotateImg(){
    document.all.myImage.src=images[count];
    count++;
    if(count == images.length){
        count = 0;
    }
    setTimeout("RotateImg()", rotate);
} 

function ShowImg() {
    var number = images.length;
    var increment = Math.floor(Math.random() * number);
    var strTemp ='<img src="' + images[increment] + '">';
    document.write(strTemp);
    RotateImg();
}

</ script>
```
und der Aufruf:

```
<script type="text/javascript">ShowImg();</ script>
```

(</ script> jeweils zusammen!)
Have a try, testen werd' ich's jetzt nicht selber.
Ist aber wenn dann eh nur die IE-Variante.

*Und sag nie wieder JAVA, wenn du JAVASCRIPT meinst!* 

Geist,
empört


----------



## karldetlef (21. September 2002)

Sorry, Geist...;-) 
Also ich habs jetzt getestet...
Als erstes musste ich mal das 
document.all.
rausnehmen, weils da immer Fehler angezeigt hat...
Dann, hab ichs probiert, und es hat auch die bilder angezeigt, aber ich will doch, dass die Bilder rotieren, ohne das die Seite geladen wird, und auch wo ich das
RotateImg(); fürn Aufruf genommen hab gings net, ich habs auch  im Body-Tag gehabt, bei onload, aber ich weiß ja nicht, es ging einfach nicht....  
need help 

Ach ja, ShowImg geht, da werden die Bilder angezeigt, und bim aktualisieren auch gewechselt, aber bei RotateImg is alles weiß...?!?


----------



## Adam Wille (21. September 2002)

Mh?

Verlinke mal bitte deine Seite, ich blick' wirklich nicht was du meinst in dem Sinne, was du erreichen willst.

Die Bilder rotieren zwar, aber sollen auch rotieren, wenn die Seite nicht geladen wurde?



Also - bitte verlinken und dazu nochmal genau schreiben was nicht gewollt wird und was dafür doch eintreten soll.

Geist


----------



## karldetlef (21. September 2002)

Da du ja grad online bist, dacht ich mir ich chreib dir noch schnell ne zurück, weil ich im mom., das nich hochladen kann...!
Also..:
Es ist nicht nötig, dass es bei jedem Aufruf ein anderes Bild ist, lediglich, dass wenn man auf der Seite ist, die Bilder gewechselt werden..., ohne zu aktualisieren ! ok? =)
Ansonsten, naja verlinken, wohl nich nötig, ich kann dir den code nochmal hier reinschreiben (hoffentlich keine anzeige-bugs...)
Ach ja, sie rotieren NICHT!, nur es wird immer wenn ich aktuallisiere mit ShowImg ein anderes Bild angzeigt, aber rotieren tun sie nicht mit RotateImg, wo es gar nichts anzeigt!


```
<script type="text/javascript">
var images = new Array();
var rotate = 5000; 
var count = 0;

images[0] = "crazy-mercenaries.bmp"; 
images[1] = "flying-dragons.bmp";
images[2] = "image3.gif";

myImage = new Image();

function RotateImg(){
    myImage.src=images[count];
    count++;
    if(count == images.length){
        count = 0;
    }
    setTimeout("RotateImg()", rotate);
} 

function ShowImg() {
    var number = images.length;
    var increment = Math.floor(Math.random() * number);
    var strTemp ='<img src="' + images[increment] + '">';
    document.write(strTemp);
    RotateImg();
}

</ script>
```
und zum aufrufen das hier:

```
<script type="text/javascript">RotateImg();</ script>
```

Is das onload im Body nötig, wohl schon oder?
aber das is ja klar...


```
onload="RotateImg();"
```
Tja, hoffentlich kannst mir helfen, warum das nich so richtig geht..  
Ergebnis: Es soll ohne zu aktuallisieren die Bilder nach ca. 10sec wechseln.... (like a dia-show)

greetings Krankmelder


----------



## Adam Wille (23. September 2002)

Hoi,

ich hab mir mal rausgenommen, die Bezeichnungen alle in deutsch zu halten, da blick' ich eher durch.
Hab' eher doch nen andren Weg als über dynamisches Bilderwechseln genommen, halt die dynamische <div>-Änderung.

Script sollte klappen, wenn das HTML-Dokument wie folgt aufgebaut ist:

```
<script type="text/javascript">

var bilder = new Array();

bilder[0] = "bild1.jpg"; 
bilder[1] = "bild2.jpg";
bilder[2] = "bild3.jpg";

var timer = 5000;
var arraylaenge = bilder.length;
var index = Math.floor(Math.random() * arraylaenge);
var Bildstring = '<img src="' + bilder[index] + '">';

function Bildwechsel () {
	if (index == arraylaenge-1) {
                index = 0;
	} else {
	        index++;
	}
	Bildstring = '<img src="' + bilder[index] + '">';
	document.all.Bild.innerHTML = Bildstring;
	setTimeout("Bildwechsel()", timer);
} 

function Bildanzeige () {
	document.all.Bild.innerHTML = Bildstring;
	Bildwechsel();
}

</ script>
```
wäre das Script (wieder dran denken: </ script> zusammen!) und als body-Teil hab ich einfach folgenden genommen:

```
<body onLoad="Bildanzeige()">
<div id="Bild">
</div>
</body>
```
hth,
Geist


----------



## karldetlef (23. September 2002)

OH THX, GEIST =)
Das ist echt nett, so gehts ... 
Mein Bruder dankt  
merci, ciao


----------

