我需要在新文本进入时向上滚动div。我的div在Updatepanel中,我收到此错误“get(”divChatMessage“)为null” 这是我的代码: -
<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);
答案 0 :(得分: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;
}