Hans Hans: Wetter Animation geht schon! aber nur mit Fehler

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>

  1. 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.

    --
    Gruß plan_B     *®*´¯`·.¸¸.·
    1. 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);  
       }  
      
      
      --
      Gruß plan_B     *®*´¯`·.¸¸.·
      1. 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)
        
  2. 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

    --
    Man kann einen Menschen nichts lehren, man kann ihm nur helfen, es selbst zu entdecken.
    (Galileo Galilei)