C# Javascript计时器在每次回发时初始化
这是我在aspx页面上的脚本,用于在页面加载时初始化计时器C# Javascript计时器在每次回发时初始化,c#,javascript,jquery,asp.net,timer,C#,Javascript,Jquery,Asp.net,Timer,这是我在aspx页面上的脚本,用于在页面加载时初始化计时器 <script type="text/javascript"> function display() { var hours = document.getElementById('<%=HidH.ClientID %>'); var minutes = document.getElementById('<%=HidM.ClientID %
<script type="text/javascript">
function display() {
var hours = document.getElementById('<%=HidH.ClientID %>');
var minutes = document.getElementById('<%=HidM.ClientID %>');
var seconds = document.getElementById('<%=HidS.ClientID %>');
if (hours.value == 00 && minutes.value == 00 && seconds.value == 00) {
PageMethods.ReturnQuestionId(1);
alert("Time Given For this Test is Over");
var newwindow = window.location.replace("frmResultCheck.aspx");
if (window.focus) { newwindow.focus() }
return false;
}
if (minutes.value < 10) {
minutes.value = minutes.value;
}
if (seconds.value <= 00) {
if ((hours.value == 00) && (minutes.value == 00))
seconds.value = 00;
else {
seconds.value = 60;
minutes.value -= 01;
}
}
if (minutes.value <= 00) {
if ((hours.value < 00) && (seconds.value < 00)) {
hours.value = minutes.value = seconds.value = 00;
}
else {
if ((hours.value == 00) && (seconds.value == 00))
hours.value = seconds.value = 00;
if ((hours.value > 00) && (minutes.value < 00)) {
minutes.value = 59;
hours.value -= 01;
}
}
}
if ((minutes.value <= -01) || (hours.value <= -01)) {
if (hours.value <= -01) {
minutes.value = 00;
hours.value += 01;
}
else
minutes.value -= 01;
seconds.value = 00;
minutes.value += 01;
}
else
if (seconds.value > 00)
seconds.value -= 01;
if (hours.value.length < 2) {
hours.value = "0" + hours.value;
}
if (minutes.value.length < 2) {
minutes.value = "0" + minutes.value;
}
if (seconds.value.length < 2) {
seconds.value = "0" + seconds.value;
}
document.getElementById('counter').value = hours.value + ":" + minutes.value +
":" + seconds.value;
setTimeout("display()", 1000);
if (document.getElementById('btnSubmit').onclick == true)
document.getElementById('counter').value = "";
}
display();
</script>
函数显示(){
var hours=document.getElementById(“”);
var minutes=document.getElementById(“”);
var seconds=document.getElementById(“”);
如果(小时.value==00&&minutes.value==00&&seconds.value==00){
PageMethods.ReturnQuestionId(1);
警报(“此测试的时间已过”);
var newwindow=window.location.replace(“frmResultCheck.aspx”);
if(window.focus){newwindow.focus()}
返回false;
}
如果(分钟值<10){
minutes.value=minutes.value;
}
如果(seconds.value在您的C#Page_加载代码中,请在初始化值之前检查它是否回发。仅当它是第一次加载时初始化(即!IsPostBack
)。
像这样:
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
// Your initializing code here
}
}
你能解释问题中的逻辑吗,你已经提供了很好的代码。一点逻辑解释将帮助我们更好地理解。好的,上面的代码负责一个页面中的倒计时计时器。当我点击页面上的下一步按钮移动到一个新位置时,javascript计时器初始化为相同的t我单击“下一步”按钮的时间。假设我单击“下一步”按钮时的时间是01:09:55,之后加载页面,但当加载新页面时,计时器返回到01:09:55,而不是加载页面所用的时间。计时器应该是01:09:42或类似的时间。您可以在此处使用会话,将跟踪器值输入为hidden字段,并在加载时读取该值DOM@Rohit您是否对Ajax开放。通常情况下,回发将刷新整个页面。由于页面再次加载,javascript变量无法维护。您可以在Ajax中单独提交答案选择。这样,您可以保留JS变量值。您能否更具体地说明上述内容注释..预期结果和当前结果是什么?是否有任何错误?在页面加载上,时间是01:09:52,但当我单击导致回发的“下一步”按钮时,时间再次初始化为01:09:52,而不是按递减顺序。javascript表达式if(document.getElementById('btnSubmit')).onclick==true)
不正确。onclick
属性永远不会返回布尔值
。它将返回函数
或null
。您可以使用if(document.getElementById('btnSubmit').onclick)
来实现这一点。那么,应该使用什么语法来使计时器工作呢?编码器没有成功…:-(
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
// Your initializing code here
}
}