Search code examples
javascriptonerror

Javascript : passing a function as an argument


I want to load a default image if an image fails to load. I also want to call getLoadComplete() once the image has loaded. How do I pass the this.getLoadComplete() function into the function called on img.onerror?

Here is the code I've got:

    img.onload = this.getLoadComplete();

    img.onerror = function(){
        img.src = "http://xxxx.com/image.gif";
     }

     img.src = request.url;

Solution

  • img.onload = this.getLoadComplete();
    

    You're invoking getLoadComplete() immediately, and assigning its return value to img.onload. You probably want this:

    img.onload = this.getLoadComplete;
    

    That is, set img.onload to the function itself, not its return value.

    You don't need to do anything special in onerror; the onload handler will still be set to getLoadComplete, and when you modify the src in your onerror handler, it will invoke onload after the fallback image is loaded.