Sven Franck: Existenz von Bild Dateien mittels onError event überprüfen

Hallo,

... zerbreche mir seit einiger Zeit den Kopf über den onError Event.

Vielleicht kann mir jemand weiterhelfen.

Versuche mittels onError zu testen, ob ein Bild (Name = [i].jpg)existiert. Falls das nicht der Fall ist wird in NoPix [i] um 1 erhöht, und die neue URL (2.jpg) geladen. Bei erneutem Fehler wiederholt sich der Vorgang...

PROBLEM: Egal, ob das Bild existiert oder nicht, es werden STETS NoPix() und YoPix() aufgerufen (siehe Script unten)!!!

Habe keine Ahnung, wie man dies vermeiden kann.

Wäre für ein wenig Erleuchtung sehr dankbar.

Schon mal Vielen Dank für eventuelle Antworten.

Sven Franck

Das Script aufs Wesentliche reduziert:

<script language="JavaScript"><!-
function testPix (1.jpg) {
    var tester = new Image();
    tester.onLoad = YoPix ();
    tester.onError= NoPix ();
    tester.src=1.jpg;
}

function YoPix() {
    alert('Bild wird geladen');
}

function NoPix() {
    alert('Bild gibts nicht [i]');
}
//--></script>

im HTML Teil:

<script language="JavaScript">
<!--
      testPix (1.jpg);
-->
</script>

  1. Halihallo Sven

    Das Script aufs Wesentliche reduziert:

    Danke.

    function testPix (1.jpg) {

    ^^^^^  sollte variabel sein, sprich: Variable, eg. img_name

    function testPix (img_name) {...}

    tester.src=1.jpg;

    ^^^^^^ und hier die Variable img_name einsetzen

    tester.src=img_name;

    ^^^^^^(2) String-Konstanten werden in Quotes geschireben => '1.jpg'

    <script language="JavaScript">
    <!--
          testPix (1.jpg);

    ^^^^^^   String-Konstanten in Quotes!

    Viele Grüsse

    Philipp

  2. hi,

    Das Script aufs Wesentliche reduziert:

    <script language="JavaScript"><!-
    function testPix (1.jpg) {
        var tester = new Image();
        tester.onLoad = YoPix ();
        tester.onError= NoPix ();
        tester.src=1.jpg;
    }

    -im funktionskopf nicht den string reinschreiben, sondern einen variablennamen.
    -onload und onerror (klein geschrieben).
    -die klammern weg bei YoPix und NoPix
    -statt 1.jpg den variablennamen, den du im kopf hast. (oder 1.jpg in "")

    ->
    function testPix(bild) {
         var tester = new Image();
         tester.onload = YoPix;
         tester.onerror = NoPix;
         tester.src = bild;
    }

    in den Funktionen kannst du das Bild Objekt (tester) einfach mit this ansprechen, zB:

    function NoPix() {
        alert(this.src + " existiert nicht");
    }

    im HTML Teil:

    <script language="JavaScript">
    <!--
          testPix (1.jpg);
    -->
    </script>

    1.jpg in ""

    Gruß
    Christian