簡體   English   中英

AJAX更新面板,將信息傳遞給JavaScript

[英]AJAX update panel, pass information to JavaScript

我有一個像這樣的倒數計時器

var leave =<%=seconds %>;
CounterTimer();
var interv=setInterval("CounterTimer()",1000);
function CounterTimer() {
try {
   if (leave>0)
    {
        var day = Math.floor(leave / ( 60 * 60 * 24))
        var hour = Math.floor(leave / 3600) - (day * 24)
        var minute = Math.floor(leave / 60) - (day * 24 *60) - (hour * 60)
        var second = Math.floor(leave) - (day * 24 *60*60) - (hour * 60 * 60) - (minute*60)
        hour=hour<10 ? "0" + hour : hour;
        minute=minute<10 ? "0" + minute : minute;
        second=second<10 ? "0" + second : second;
        var remain=day + " days   "+hour + ":"+minute+":"+second;
        leave = leave - 1;
        document.getElementById("<%=lblRemain.ClientID %>").innerText=remain;
    }
    else
    {
        try{
            document.getElementById("<%=lblRemain.ClientID %>").innerText="Auction closed";}
            catch(err) {   //alert(err.Message);
            }
    }
    }
    catch(err)
    { alert(err.Message);}

}

我正在設置/輸入c#中的離開變量的值

seconds = (ClosingOn - DateTime.Now).TotalSeconds;

在網頁上,我有一個顯示拍賣信息的UpdatePanel,並且此UpdatePanel每5秒更新一次。 在倒計時期間,我希望能夠更改計時器事件中的剩余時間

protected void Timer1_Tick(object sender, EventArgs e)
{
    ClosingOn.AddMinutes(5);
    seconds = (ClosingOn - DateTime.Now).TotalSeconds;
}

但是此更改不會影響JavaScript中的離開變量:(

你能看到一個出路嗎?

我的Interent連接速度很慢,因此每秒都不能有一個updatepanel更新。

那是因為這個表達式var leave =<%=seconds %>; 僅在頁面渲染上評估一次。 不用用<%= seconds%>表達式評估休假值,而是將HiddenField添加到放置了Timer控件的UpdatePanel中。 在javascript中,您可以獲取該字段的值並將其解析為int。 在Timer1_Tick中,您可以在該隱藏字段上分配新值。

或者,如果您正在尋找一種快速的解決方法,則可以在Timer1_Tick方法的末尾添加以下代碼:

ScriptManager.RegisterStartupScript(Timer1, typeof(Timer), Guid.NewGuid().ToString(), string.Format("leave = {0}", seconds), true);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM