我有以下显示/隐藏按钮的JS代码(必须以这种方式完成,请不要以其他方式这样做)。
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(beginRequestHandle);
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandle);
function beginRequestHandle(sender, Args) {
document.getElementById("ltInstructions").style.visibility = "hidden";
document.getElementById("btnSubmit").style.visibility = "hidden";
document.getElementById("btnToExcel").style.visibility = "hidden";
}
function endRequestHandle(sender, Args) {
if(<%=resultsCount %> > 0)
{
document.getElementById("ltInstructions").style.visibility = "visible";
document.getElementById("btnSubmit").style.visibility = "visible";
document.getElementById("btnToExcel").style.visibility = "visible";
}
else
{
document.getElementById("results").innerHTML = "<br><b><center><font size=20>No results found, please try again.</b></font></center>";
}
}
问题是<%=resultsCount %>
在后面的代码中初始化为0,然后在Timer_Tick方法中更新。上面的Js总是把它当作0。
如何让JS把它作为正确的值?
答案 0 :(得分:1)
使用asp:hiddenfield代替并在Timer_Tick中更改其值,您将获得更新的值。
在HTML中
<asp:HiddenField id="resultsCount" runat="server" Value="String" />
在Javascript中
resultsCount = document.getElementById('<%= resultsCount.ClientID %>').value;
答案 1 :(得分:0)
尝试在浏览器中查看网页的来源。您必须在JavaScript中编写计时器,因为<%=resultsCount %>
只评估一次,因此,所有客户看到的都是
if (0 > 0) {
...
}
您可以使用setInterval
和clearInterval
方法在JavaScript中实现计时器。定义一个函数update()
,只要需要更新某些内容就应该调用它,然后执行
var updateInterval
function update() {
if(condition) {
/* update stuff */
} else {
/* no more updates needed */
clearInterval(updateInterval) /* stop updating */
}
}
updateInterval = setInterval(update, 1000) /* call update() every 1000 ms, that is every second */