Javascript-Funktionen = KRIEGSFUSS
bearbeitet von Bertha Banane> ~~~js
> function checkSize(image) {
> img = new Image();
> img.src = image.attr('src');
> img.onload = function() {
> console.info(this.width);
> };
> }
>
> checkSize($('img#einBild'));
> ~~~
>
> wie bekomm ich dieses "this.width" außerhalb der Funktion gebracht. ich will es später wieder verwenden.
Als Erstes solltest du dir bewusst sein, dass .width erst zur Verfügung stehen wird, wenn das Bild geladen ist, wenn also das Ereignis onload ausgelöst bzw. abgearbeitet wurde. Ich erwähne das extra, weil du hier in einem zweiten Beitrag eine eigene Lösung beschrieben hast, die dann -onload und seinen zeitlichen Ablauf beachtend eigentlich wenig überraschend- doch nicht funktionierte.
Insofern ist dein Ansatz hier etwas unvollständig, es fehlt der Teil, der "später" .width verarbeiten soll. Andererseits hast du ihn hier in gewisser Hinsicht schon drin – in Form von console.info(this.width). Ersetze diese Zeile mit allem, was nach checkSize($('img#einBild')); kommt und sich auf .width bezieht.
Falls die Breite auf verschiedene Arten verarbeitet werden soll, müsstest du stattdessen je nach Situation checkSize() eine Funktion übergeben, die diese Verarbeitung übernimmt:
~~~js
function machWasMitBreite(image, funktion) {
img = new Image();
img.src = image.attr('src');
img.onload = funktion;
}
machWasMitBreite($('img#einBild'), function () {
console.info("mache dies mit " + this.width);
});
machWasMitBreite($('img#irgendeinAnderesBildInEinemAnderenZusammenhang'), function () {
console.info("mache irgendwas anderes mit " + this.width);
});
~~~