Zufall-OnMouseOver blockiert nach Error
Philipp Oettli
- javascript
hallo denn
Bei meinem Rollover wird durch Random() aus verschiedenen ein Bild ausgewählt. Manchmal gibt Random aber keinen Wert zurück, was einen Error ergibt. Dieser Error blockiert dann das Bild und es kann nicht mehr gewechselt werden.
Ist da ein Fehler drin oder gibt es eine Möglichkeit den Error abzufangen ?
Merci
Philipp
Quelltextausschnitt:
(Ganzer Code unter: http://clan.ch/phoe/dc/game3.html
// Bilder auflisten
var bildurl = new Array(
"space.gif",
"ca1.jpg",
"ca2.jpg",
"ca3.jpg")
// die Bilder laden
im = new Array();
for (var i = 0; i < bildurl.length; i++)
{
im[i] = new Image();
im[i].src = bildurl[i];
}
// die Bilder wechseln
function Bildwechsel(Bildplatz,BildNr)
{
Bildplatz.src = im[BildNr].src;
}
</script>
</HEAD>
<BODY BGCOLOR=#c0c0c0 LINK=#800000 VLINK=#808000>
<TABLE BORDER = 0 CELLPADDING=0 CELLSPACING=0 ALIGN=CENTER WIDTH=600>
<TR>
<TD ALIGN=CENTER><A HREF="javascript:check_n_go();"
onMouseOver="Bildwechsel(a1,Math.round(Math.random() * bildurl.length));"><IMG NAME="a1" SRC="space.gif"
WIDTH=150 HEIGHT=100 BORDER=0></A>
Hallo Philipp
Ist da ein Fehler drin oder gibt es eine Möglichkeit den Error abzufangen ?
Einen Fehler kann ich eigentlich nicht erkennen. Aber vielleicht solltest Du mal probieren, der Funktion Bildwechsel beim Aufurf nur den Bildplatz als Parameter zu uebergeben und den random-Aufruf innerhalb dieser Funktion zu notieren. Es gibt zwar meines Erachtens keinen triftigen Grund dafuer, warum das sauberer waere, aber dass JavaScript-Interpreter nicht immer alles perfekt machen, was sprachlogisch moeglich ist, waere jedenfalls nichts Neues.
viele Gruesse
Stefan Muenz
hallo Stefan
»»Aber vielleicht solltest Du mal probieren, der Funktion Bildwechsel beim Aufurf nur den Bildplatz als Parameter zu uebergeben und den random-Aufruf innerhalb dieser Funktion zu notieren.
Genau das hatte ich in meiner ersten Version. Weil es nicht klappte versuchte ich die obige Version, leider mit wenig Erfolg....
Hallo Philipp,
ich habe da einen Fehler entdeckt:
var bildurl = new Array(
»» "space.gif",
»» "ca1.jpg",
»» "ca2.jpg",
»» "ca3.jpg")
Hier wird ein Array mit 4! Elementen (d.h. bildurl.length=4 angelegt, die die Nummern 0-3 haben
// die Bilder laden
»» im = new Array();
»» for (var i = 0; i < bildurl.length; i++)
»» {
im[i] = new Image();
im[i].src = bildurl[i];
}
Entsprechend sind hier auch nur im[0] bis im[3] (und nicht 4) definiert.
Math.round(Math.random() * bildurl.length) liefert im Maximalfall dann 4 und dann wird das Bild im[4] aufgerufen - und das gibt's nicht, daher dann der Fehler!
Mit Math.round(Math.random()*(bildurl.length-1) müßte es aber klappen ;-).
Gruß
Leonhard
Hallo Leonhard,
ich habe da einen Fehler entdeckt:
Super ! da war also ein Wurm drin Herzlichen Dank - Die Fehlermeldungen sind weg
Aber leider blockiert es die Bilder immer noch. Das lag anscheinend nicht an den Fehlern.
Gruss und nochmals Danke
Philipp