问题
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;
回答1:
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.
回答2:
you just need to call the function.
img.onload = this.getLoadComplete();
img.onerror = function(){
img.src = "http://www.3d-maps-minus-3d.com/img/unavailable.gif";
this.getLoadComplete();
}
来源:https://stackoverflow.com/questions/19643528/javascript-passing-a-function-as-an-argument