2011-01-20 50 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

相關問題