从javascript更改label的文本

本文关键字:文本 label 更改 javascript | 更新日期: 2023-09-27 18:06:02

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

<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() ;
}

但是这会重启定时器

从javascript更改label的文本

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

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