2009-08-15 30 views
1

我需要向上滾動div作爲新的文本進來。我的div是在UpdatePanel,我得到這個錯誤「get(」divChatMessage「)爲空」 這是我的代碼: -Scrollup的div在updatepanel

<script type="text/javascript"> 
function ScrollToBottom() 
{ 
     $get('divChatMessage').scrollTop = $get('divChatMessage').scrollHeight; 
} 
</script> 
<div id="divMessage" runat="server" style="float: left"> 
      <asp:UpdatePanel ID="upMessage" runat="server"> 
       <ContentTemplate> 
       <div id="divChatMessage" style="width:600px; overflow:auto; height:200px; border-style:solid;" runat="server"> 
       </div> 
</ContentTemplate> 
      </asp:UpdatePanel> 
     </div> 

後面的代碼: -

divChatMessage.InnerHtml = divChatMessage.InnerHtml + "<br />" + message; 
ScriptManager.RegisterStartupScript(this, 
            this.GetType(), 
            Guid.NewGuid().ToString(), 
            ";ScrollToBottom();", 
            true); 

回答

1

您正在運行與命名容器的問題。由於您的控件設置爲runat = server,因此它的名稱將在客戶端發生損壞。將div的ClientID作爲參數提供給代碼背後的腳本,這將解決您的問題。

ScriptManager.RegisterStartupScript(this, 
            this.GetType(), 
            Guid.NewGuid().ToString(), 
            ";ScrollToBottom('" 
             + divChatMessage.ClientID 
             + "');", 
            true); 

function ScrollToBottom(id) 
{ 
    var ctl = $get(id); 
    ctl.scrollTop = ctl.scrollHeight; 
} 
+0

我非常感謝您的幫助。 – Jango 2009-08-15 13:33:10