Bild auf Vorhandensein prüfen
vweed
- javascript
Hallo Ihr Profis,
ich versuche gerade eine Abfrage zu schreiben, die prüft, ob bestimmte Bilder, von welchen der Name bekannt ist, auch auf dem Server vorhanden sind.
Aufgabe: In einer For-Next-Schleife wird ein Dokument mit Bildern geprüft, die in dem Dokument vorhanden sind, aber durch jeweils ein grösseres mit ähnlichem Namen ersetzt werden sollen, sofern dieses grössere Bild auf dem Server existiert.
Habe hierzu das Beispiel von JStruebig verwendet und entsprechend abgeändert.
normale Bilder heissen "bild01_640.jpg"
grosse (und nicht immer vorhandene) Bilder heissen "bild01_800.jpg"
wobei das "01" (bis "99") ein laufender Zähler für die Bilder ist.
Bin derzeit soweit:
// Schleife
for (var i = 0; i < document.images.length; i++)
{
// Bilder nacheinander auslesen und in Array schreiben
picadr[i] = (document.images[i].src);
// grösseres Bild in var testBild kopieren
var testBild = picadr[i].substring(0,6) + "800" + picadr[i].substring(10,picadr[i].length)
// neues Bild anlegen
var img = new Image()
// Bildquelle = grosses Bild
img.src = testBild
// wenn grosses Bild nicht vorhanden, dann var testBild = kleines Bild
img.onerror = function () {testBild = picadr[i]}
picadr[i] = testBild
}
Das haut aber nicht hin.
Was mache ich falsch?
Wäre sehr nett, wenn mir einer von Euch helfen könnte.
Suche schon den ganzen Mittag lang nach einer Lösung.
herzliche Grüsse und einen schönen 4. Advent
Hallo vweed,
img.onerror = function () {testBild = picadr[i]}
der Eventhandler wird erst aufgerufen, wenn das Ereignis eintritt, nicht sofort.
picadr[i] = testBild
zu diesem Zeitpunkt ist die Handlerfunktion noch nicht gelaufen.
Gruß, Jürgen
Hallo Jürgen,
aha, besten Dank für die Info.
Nachdem JS nicht zu meinen Leib- und Magen-Sprachen gehört, wie kann ich das Problem denn umschiffen, so dass es funktioniert?
Beste Grüsse
Vero
Hallo Ihr,
habe das Problem elegant auf Frauenweise - also durchs Hintertürchen beseitigt.
Nachdem ich feststellte, dass die kleinen Bilder in einem anderen Unterverzeichnis liegen, wenn zu diesen auch ein grosses Ebenbild existiert, als die kleinen Bilder ohne grosses Equivalent, brauchte ich nur noch den Bilderpfad zu checken, um festzustellen, ob ein kleines Bild einen grossen Bruder hat oder nicht.
Problem gelöst - jetzt funktioniert die Sache.
Besten Dank für die Unterstützung - aber mit ein, zwei Stichworten ist es bei mir leider bei JS nicht getan. Bin eigentlich VB-Coder.
JS-Kenntnisse sind nur rudimentär vorhanden.
Bin aber sehr lernwillig
Beste Grüsse
Veronika
Mach mal ; hinter die ganzen Zeilen. Ich weiß zwar nicht mal ob die in JS zwingend sind, aber wenn die fehlen könnte das auch schon einiges Kopfzerbrechen machen.
@@Encoder:
nuqneH
Mach mal ; hinter die ganzen Zeilen.
Hinter for (var i = 0; i < document.images.length; i++)
aber nicht! Hinter }
auch nicht.
Ich weiß zwar nicht mal ob die in JS zwingend sind
Nein, sind sie nicht. Sie sollten aber dennoch gesetzt werden.
Qapla'