0

我有以下显示/隐藏按钮的 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 把它当作正确的值?

4

2 回答 2

1

改用 asp:hiddenfield 并在 Timer_Tick 中更改其值,您将获得更新的值。

在 HTML 中

 <asp:HiddenField id="resultsCount" runat="server" Value="String" />

在 Javascript 中

resultsCount = document.getElementById('<%= resultsCount.ClientID %>').value;
于 2012-07-09T08:54:57.473 回答
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 */
于 2012-07-09T08:51:37.327 回答