Struppi: Stack overflow vermeidbar?

Beitrag lesen

Naja, hab ich mir fast gedacht, dass ich ein wenig mehr ins Detail gehen sollte...

Folgend Script mit ein wenig Instruktionen und hoffentlich ausreichend zusammengekürzt.

Bah mir ist gar nicht aufgefallen was da in dem Skript noch alles drin steckt. Auweia.

<!--
        //globals
        var catory = "012"
        var Saison = 8;
        var i = "";
        var s = "";
        var a = "";
        var y = 0;

Sowas GLobal zu deklarieren ist sehr gefährlich und kann dich am Schluss einige Stunden debuggen kosten.

var stopper = 0;
        var mistakecounter = "";

//array
        container = new Array ();
                     for (i=0; i<76; ++i) {
                          if (i<10) {
                          j = "0" + i;
                     } else {
                          j = i;
                     }
                      container[i] = new Image (50,50);
                      container[i] = catory + "-" + Saison + "-" + [j] + ".jpg";

Erst weist du dem Element ein Image Objekt zu und dann doch ein String. Wenn dir die Reihenfolge der Bilder egal ist würde ich die erste Variante verwenden und das Objekt um die Eigneschaften die du benötigst erweitern.

container[i] = new Image ();
container[i].onload=Wasda;
container[i].onerror=Nixda;
container[i].src = catory + "-" + Saison + "-" + [j] + ".jpg";

}

//main part
              s = 0;
              var Pix = container[s];
              testImage (Pix);

Der 'main Part' ist dann überflüssig.

//------------start function loop-----------------

//Bild vorhanden

function Wasda()
                 {
                 y = ++y;
                 document.all.tags("div")[y].innerHTML = "<img src='T" + container[s] + "' name='"+"Bild"+ s + "' border=0 height=50px width= 50px alt='' onclick='NLarge(name);'>";

Das ist IE 4.x syntax, du solltest dich mal mit neueren Browsern beschäftigen.
wie gesagt container[s] ist this.src

y = ++y;
                 var Pix = container[s];

var Pix = this.src;

var DisplayMain = Pix.slice(Pix.length-Pix.length,[Pix.length-4]);

Keine ahnung was du da genau willst, ich vermute mal den Dateinnamen.

document.all.tags("div")[y].innerText = DisplayMain;

all.tag() ist IE 4.x

//anhalter, fuer den Table
                 if (stopper <=20)
                 {
                 stopper = ++stopper;

Du musst hier stopper nichts zuweisen stopper++ erhöht bereits stopper um eins auch ohne Zuweisung.

s = ++s;

dito.

var Pix = container[s];
                 testImage (Pix);

Nicht mehr nötig.

}
                 }

//kein Bild vorhanden

function Nixda()
                 {
                 mistakecounter = ++mistakecounter
                 s = ++s
                 if (mistakecounter<18)
                 {
                 Pix = container[s];
                 testImage (Pix);
                 }
// HIER KOMMT DER STACK OVERFLOW; WENN MISTAKECOUNTER > 18 wird!!!

Nixda() ist eigenlich auch nicht mehr nötig. Da in wasDa() ja schon mitgezählt werden kann, wieviele Dateien erfolgreich angezeigt wurden.

Struppi.