Wetter Animation geht schon! aber nur mit Fehler
Hans Hans
- javascript
Das Programm ist schon ganz gut aber ich krig den Wurm nicht raus.
Mozilla sagt:
Fehler: b[z] has no properties
Quelldatei: file:///C:/Dokumente%20und%20Einstellungen/xxx/Desktop/Satellit2.htm
Zeile: 61
?????????????
Das Programm hat drei Aufgaben.
1. Aktuelles Startbild anzeigen. (und die anderen Bilder Schon mal laden.)
2. Beim auslösen Animation starten.( mit Aktuellen Bilden)
3. alle Halbe Stunde oder beim auslösen Aktuelles Bild zeigen.
Bei 3 macht er immer einen Fehler.
??????????
<html>
<head>
<title>Wettersatellit</title>
</head>
<body topmargin="0" leftmargin="0" bgcolor="#6A91E0">
<p align="center">
<script type="text/javascript">
Bilderanzahl = 24; /// Bilder Anzahl
Zweiterspeicher = Bilderanzahl;
x = 0; /// Bilder Start-Nummer in der Array.
i = Bilderanzahl;
b = new Array();
Jetzt = new Date();
Jetztaktuell = Jetzt - 2700000; /// Eine Viertel Stunde zurück für das Aktuelle Bild
while (i != 0) {
i=i-1;
Jetztminus = Jetztaktuell-(i*3600000); /// Um die Anzahl der Bilder zurück
Jetztminus = new Date(Jetztminus);
Javastunde = Jetztminus .getHours();
Stunde = new Array("00","01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12","13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23");
Tag = Jetztminus.getDate();
Javamonat = Jetztminus .getMonth();
Monat = new Array("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12");
Jahr = Jetztminus .getFullYear();
if (i==0) document.write('<img src=http://www.wdr.de/themen/wdrwetter/regenradar/sat_ddlR-'+Jahr+'-'+(Monat[Javamonat])+'-'+Tag+'-'+(Stunde[Javastunde])+'_00.jpg>');
Bild = "http://www.wdr.de/themen/wdrwetter/regenradar/sat_ddlR-"+Jahr+"-"+(Monat[Javamonat])+"-"+Tag+"-"+(Stunde[Javastunde])+"_00.jpg";
b[x] = new Image();
b[x].src = Bild;
x = x+1;}
z=0
function Animationaktuell () {
x = 0; /// Bilder Start-Nummer in der Array.
i = Bilderanzahl;
if (Bilderanzahl == 0) Bilderanzahl = Zweiterspeicher;
b = new Array();
Jetzt = new Date();
Jetztaktuell = Jetzt - 2700000; /// Eine Viertel Stunde zurück für das Aktuelle Bild
while (i != 0) {
i=i-1;
Jetztminus = Jetztaktuell-(i*3600000); /// Um die Anzahl der Bilder zurück
Jetztminus = new Date(Jetztminus);
Javastunde = Jetztminus .getHours();
Stunde = new Array("00","01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12","13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23");
Tag = Jetztminus.getDate();
Javamonat = Jetztminus .getMonth();
Monat = new Array("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12");
Jahr = Jetztminus .getFullYear();
Bild = "http://www.wdr.de/themen/wdrwetter/regenradar/sat_ddlR-"+Jahr+"-"+(Monat[Javamonat])+"-"+Tag+"-"+(Stunde[Javastunde])+"_00.jpg";
b[x] = new Image();
b[x].src = Bild;
x = x+1;}
z=0
Animation ()}
function Animation () {
document.images[0].src = b[z].src;
z++;
if (z != Bilderanzahl)window.setTimeout("Animation()", 80);
else {z=0};
}
function Anzeigeaktuell() {
Bilderanzahl = 0
Animationaktuell ()}
window.setTimeout("Anzeigeaktuell()", 1800000); // Alle Halbe Stunde Aktualisieren
</script>
<br><font face="Arial">
<a href="javascript:Animationaktuell()">
<font color="#FF00FF">Start der Animation</font></a><br>
<a href="javascript:Anzeigeaktuell()">
<font color="#FF00FF">Anzeigeaktuell</font></a></p>
Hallo,
Mozilla sagt:
Fehler: b[z] has no properties
das bedeutet wohl: z>=b.length
ein paar alert() einbauen und die Indices abfragen.
Wenn man am Anfang schon ein bischen Struktur ins Script bringt, lässt es sich leichter pflegen. So ist schwierig zu überblicken.
Hallo,
Wenn man am Anfang schon ein bischen Struktur ins Script bringt, lässt es sich leichter pflegen. So ist schwierig zu überblicken.
wie wär's, die "Namenberechnung" aus einem Datum erstmal zu kapseln?
function date_to_name(teil1,d,ext) {
function s2(x) {
return x<10 ? ("0"+x) : (""+x);
}
var name=teil1
+"-"+d.getFullYear()
+"-"+s2(1+d.getMonth())
+"-"+s2(d.getDate())
+"-"+s2(d.getHours())
+"_"+s2(d.getMinutes())
+ext;
return name;
}
und dann bei der Zuweisung zu fragen:
if (z<b.length) {
document.images[0].src = b[z].src;
}
else {
alert("Überschreitung:\nb.length: "+b.length+"\nz: "+z);
}
Moin
if (z<b.length) {
document.images[0].src = b[z].src;
}
else {
alert("Überschreitung:\nb.length: "+b.length+"\nz: "+z);
}
>
was 24 mal zu einem alert("Überschreitung ...") führt, aber immerhin den Scriptabbruch verhindert.
Abhilfe: siehe mein obiges Posting.
Gruß
rfb
--
Man kann einen Menschen nichts lehren, man kann ihm nur helfen, es selbst zu entdecken.
(Galileo Galilei)
Moin
streich mal in Animationaktuell ()
b = new Array();
und
b[x] = new Image();
b ist bereits declariert, du brauchst lediglich den Wert bei b[x].src zu ändern.
Gruß
rfb