2011-01-20 48 views
1

我正在显示一个配置文件图像。如果该图像大于某个尺寸,我想对其进行缩放,以便将附加事件附加到该图像。在图像加载后,我会检查它是否更大,如果是这样,那么我会缩放它到一个较小的图像。我正在显示一个加载动画,直到图像加载。如何在另一个事件处理程序中使用此关键字

<td height="203" valign="middle" align="center"><div id="loadingdiv">Loading... 
</div><img style="display:none;" id="proimg" src="<?=$path?>" /> 
</td> 

<script type="text/javascript"> 

var pro = document.getElementById('proimg'); 
pro.onload = function() 
{ 
    if(this.width>260)this.style.width = '260px'; 
    if(this.height>200)this.style.height = '200px'; 
    window.setTimeout(function() { 
     document.getElementById('loadingdiv').style.display = 'none'; 
     this.style.display = 'inline'; 

    },1000); 
} 

</script> 

加载动画将消失,并且图像在一秒钟后可见。这就是我想要的,所以我像上面那样做了。但如何将onload的这个引用到settimeout事件处理程序中?

没有settimeout它工作正常,我可以去,但我只是想显示延迟。

编辑:

我用做像第reply.But我认为应该有另一种方式或这样的概念。

有什么办法可以在这里关闭吗?所以我不必使用额外的变量引用。

回答

2

您不能在匿名事件句柄函数中使用此键盘,但您仍然可以对当前this进行引用,然后使用该引用来调用对象上的方法/属性。这里有一个例子:

var that = this; 
window.setTimeout(function() { 
    that.style.display = 'inline'; 
}, 1000); 
+0

这很好。这是我的方式,但我认为会有一些其他的选择或概念。 Closure在这里有什么要做的吗?我仍然还没有理解封闭。 – 2011-01-21 10:32:30

相关问题