我有一个用户控件,其中有一个树视图。每次用户展开一个节点时,它都会使用更新面板重新加载。为了防止用户每次重新加载时都必须滚动树视图,我想捕获当前 div 的 scrollTop 值,将其保存到文本框,然后在回发后,获取该值并重新加载它。除了一种奇怪的行为外,一切正常。这是div:
<div ID="treePanel" runat="server" class="treePanel" onscroll="setScroll(this.scrollTop)" onunload="testScroll()" >
<asp:TextBox ID="scrollTb" runat="server" Text="" ></asp:TextBox>
<asp:TreeView ID="TreeView1" runat="server"
OnTreeNodeExpanded="Node_Expand" CollapseImageToolTip="Click To Collapse" ExpandImageToolTip="Click To Expand">
</asp:TreeView>
</div>
这是 javascript 函数,位于母版页中:
function setScroll(getVal){
var getTb = document.getElementById("ctl00_ContentPlaceHolder1_rmsStepThree1_scrollTb")
getTb.value= getVal
}
function testScroll(){
var getTb = document.getElementById("ctl00_ContentPlaceHolder1_rmsStepThree1_scrollTb")
var getDiv = document.getElementById("ctl00_ContentPlaceHolder1_rmsStepThree1_treePanel")
getDiv.scrollTop= getTb.value
}
问题是,除非我在 javascript 中添加“Alert()”,否则这将不起作用,如下所示:
function testScroll(){
var getTb = document.getElementById("ctl00_ContentPlaceHolder1_rmsStepThree1_scrollTb")
var getDiv = document.getElementById("ctl00_ContentPlaceHolder1_rmsStepThree1_treePanel")
alert('some text')
getDiv.scrollTop= getTb.value
}
谁能解释为什么会这样以及如何补救?我显然不能在那里发出警报。
谢谢杰森