如何在另一个事件处理程序中使用此关键字

时间:2011-01-20 08:32:53

标签: javascript-events

我正在显示个人资料图片。如果该图像大于某个尺寸我想缩放它,所以我将onload事件附加到该图像。在图像加载后,我将检查它是否更大,如果是,那么我将它缩放到一个较小的图像。我正在显示加载动画,直到图像加载。

<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它工作正常,我可以使用它,但我只是想显示延迟。

修改

我习惯做第一次回复。但我认为应该采用另一种方式或概念来做这件事。

我可以在这里使用封闭装置吗?因此,我不必使用额外的可变参考。

1 个答案:

答案 0 :(得分:2)

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

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