从javascript更改标签的文本

时间:2014-06-01 10:03:55

标签: c# javascript asp.net timer

所以我的第一个问题是当我们点击按钮时会发生什么?页面刷新或其他东西,因为我正在处理一个小项目并面临问题

<script language="javascript" type="text/javascript">
    var totalTime = 0;
    var interval = 0;
    var min = 0;
    var hr = 0;
    var sec = 0;
    var secstr = 0;
    var minstr = 0;
    var flag = 0;
    window.onload = startResetTimer

    function startResetTimer() {
        totalTime = 20;
        hr = Math.floor(totalTime / 3600);
        sec = totalTime % 60;
        if (sec == 0)
            min = (totalTime / 60) % 60;
        flag = 1;
        interval = setInterval(function () {
            if (flag == 1) {
                if (totalTime <= 0) {
                    flag = 0;
                    PageMethods.CallIt();
                }
                else {
                    totalTime--;
                    hr = Math.floor(totalTime / 3600)
                    sec = totalTime % 60
                    if (sec == 0)
                        min = (totalTime / 60) % 60
                    if (sec < 10)
                        secstr = "0" + sec
                    else
                        secstr = sec
                    if (min < 10)
                        minstr = "0" + min
                    else
                        minstr = min
                }
            }
            console.log(document.getElementById('MainContent_Label2'));
            document.getElementById('MainContent_Label2').innerHTML = "" + hr + ":" + minstr + ":" + secstr
        }, 1000)
    }

</script>

这是计时器代码,当计时器到期时,我正在调用页面方法“CallIt()”//只是调试名称// //asp.net代码

public partial class _Default : System.Web.UI.Page
{
    public static _Default obj;
    protected void Page_Load(object sender, EventArgs e)
    {
        obj = this;
    }
    public void print()
    {
        Label1.Text = "called form every where";
    }
    [WebMethod]
    public static void CallIt()
    {
        obj.print();
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        obj.print();
    }
}

现在来自CallIt()我调用另一个函数print()来改变“Label1”的文本并从按钮点击调用相同的函数print(),现在当我按下它时它改变了Label1的文本但是当定时器时过期它没有,print()函数被调用我通过使用断点检查这个但它没有反映在页面中。所以我认为页面刷新应该有帮助,所以我放置

if(totalTime <= 0) {
   PageMethods.CallIt();
   window.location.reload() ;
}

但这会重新启动计时器。

1 个答案:

答案 0 :(得分:1)

当你从javascript调用asp.net页面的web方法时,MS javasvript引擎对该页面执行ajax请求,并返回javascript服务调用提供的数据,就是这样。你的CallIt方法没有返回任何内容,所以在javascript中你什么都不会收到,而且正如我所说的其他任何东西都不会被评估,也请不要在静态属性中存储“this”,因为每次请求时你都会重新创建Page对象和你在多客户端环境中可能会出现一些错误。

所以我建议你从你的javascript调用这个方法,收集方法返回的数据,并在浏览器中使用javascript手动更新标签