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