js不能够执行asp.net里的函数或者方法,你需要的是服务器的时间进行的倒计时。
首先需要一段能够执行的js进行客户端的倒计时,然后在cs文件中定义几个公共变量传到js中,如下:
<script language="javascript" type="text/javascript"> 
var _t; 
var _h = 0; 
var _m = 59-<%=currentMinute %>; 
var _s = 59-<%=currentSecond %>; 
var _v = formatTime(_h + ':' + _m + ':' + _s); function doTime() { 
    _s --; 
    if (_s == -1) { 
         _m --; 
         _s = 59; 
    } 
    if (_m == -1) { 
         _h --; 
         _m = 59; 
    } 
    var _b = ((_h == 0) && (_m == 0) && (_s == 0)); 
    if (_b) { 
        _v = '倒计时结束'; 
        clearTimeout(_t);
        document.getElementById("btn1").click(); 
    } else { 
        _v = formatTime(_h + ':' + _m + ':' + _s); 
        _t = setTimeout('doTime()', 1000); 
    }  
    document.all['oTime'].innerHTML = _v; 
} function formatTime(_time) { 
    return _time.replace(/\b(\w)\b/g, '0$1'); 
} function startTimer() { 
    document.all['oTime'].innerHTML = _v; 
    _t = setTimeout('doTime()', 1000); 
} function isStart()
{
    startTimer();
}
</script>
....
<asp:Button CssClass="btnblue" ID="btn1" runat="server" Text="执行其他操作" OnClick="btn1_Click" OnClientClick="return confirm('您确定现在执行别的操作吗')" />
<span id="oTime"></span>
....cs页面
public static string startTime = System.DateTime.Now.ToString();//得到服务器当前时间
public static string endTime = System.DateTime.Now.AddHours(-1).ToString();//得到一小时后的时间
public string currentMinute = "0";//当前分钟数
public string currentSecond = "0";//当前秒数
protected void Page_Load(object sender, EventArgs e)
{
...
}
综上所述可以实现倒计时结束执行服务端程序OnClick="btn1_Click" 不过还是推荐使用ajax(开销比较大哦)来实现这些操作:
1、ajax的timer控件每秒刷新(时间panel)得到倒计时时间
2、判断倒计时结束时,弹出一个(panel或div都可以)确认框让用户选择是否继续....

解决方案 »

  1.   

    楼主 你把 i 值 给一个 hidden 
    然后取hidden的值试试
    i值取不到 可能是作用域问题
    具体 我不清楚
      

  2.   

    你好,我要实现的是倒计时执行某方法,按你这么说,似乎不能用JAVASCRIPT,如果用户在浏览器上禁用JAVASCRIPT的话,这个倒计时就失效了,所以现在我打算在客户端用JAVASCRIPT做一个倒计时控件,提醒用户操作剩余时间,服务器上用TIMER控件进行时间控制using System.timers;//命名空间引用Timer tm = new timer();protected void Page_Load(object sender, EventArgs e)
    {
        tm.Interval = TimeLimit;//TimeLimit为用户操作有效时间   
        tm.Elapsed += new ElapsedEventHandler(Auto_Set);
        tm.Start();
        tm.Enabled = true;
        
    }
    void Auto_Set(object sender, ElapsedEventArgs e)
    {
        //到时间执行相关操作
        throw new Exception("The method or operation is not implemented.");
        }