我能';不要让javascript上的计时器重定向到另一个页面

我能';不要让javascript上的计时器重定向到另一个页面,javascript,performance,Javascript,Performance,我会尽量简短 我对编程几乎一无所知,我正试图为个人项目自学。 我正在尝试做一些类似计时器的事情,当它达到0时,会重定向到另一个页面。到目前为止,我成功构建的是: <!DOCTYPE html> <html> <body> <input type="text" id="txt"> <body onload="startCount()"> <script> var c = 10; var t ; var timer

我会尽量简短

我对编程几乎一无所知,我正试图为个人项目自学。 我正在尝试做一些类似计时器的事情,当它达到0时,会重定向到另一个页面。到目前为止,我成功构建的是:

<!DOCTYPE html> 
<html> 
<body>

<input type="text" id="txt">

<body onload="startCount()">

<script>
var c = 10; 
var t ; 
var timer_is_on = 0;

function timedCount() {   
document.getElementById("txt").value = c;   
c = c - 1;   
t = setTimeout(timedCount, 1000); 
}

function startCount() {   
if (!timer_is_on) {
    timer_is_on = 0;
    timedCount();   
}
}

</script>

</body> 
</html>

var c=10;
变量t;
var定时器_为_on=0;
函数timedCount(){
document.getElementById(“txt”).value=c;
c=c-1;
t=设置超时(timedCount,1000);
}
函数startCount(){
如果(!计时器打开){
定时器_为_开=0;
timedCount();
}
}
当我在chrome上试用时,它不会运行,或者会立即跳转到另一个页面。 如果你能告诉我出了什么问题,或者如何修复它,那就太好了

现在,我刚刚发现(?)我丢失了重定向的另一部分。我用过这个

<script>
function myFunction() {
  location.replace("https://www.w3schools.com")
}
</script>

函数myFunction(){
位置。替换(“https://www.w3schools.com")
}
我不知道我的解释是否正确,但我感谢你的帮助

谢谢


编辑:谢谢大家的回答!!现在已修复。

在timedCount中检查C的值是否大于0,否则运行setTimeout(小于或等于0)重定向

此外,我认为您的意思是在此处将计时器更新为1:

function startCount() {   
if (!timer_is_on) {
    timer_is_on = 0; //Shouldn't this be set to 1?
    timedCount();   
}
}

在timedCount中,检查C的值是否大于0,否则运行setTimeout(小于或等于0)重定向

此外,我认为您的意思是在此处将计时器更新为1:

function startCount() {   
if (!timer_is_on) {
    timer_is_on = 0; //Shouldn't this be set to 1?
    timedCount();   
}
}

我认为您要做的是每秒更新输入框中计时器的值,直到它达到零,然后重定向到另一个URL

这将起到必要的作用: (我删除了一些不需要的未使用代码)


var timeLeft=10;
函数timedCount(){
document.getElementById(“txt”).value=timeLeft;
如果(时间限制){
setTimeout(函数(){
时间限制--;
timedCount();
}, 1000);
}否则{
window.location=https://w3schools.com';
}
}
timedCount();

我认为您要做的是每秒更新输入框中计时器的值,直到它达到零,然后重定向到另一个URL

这将起到必要的作用: (我删除了一些不需要的未使用代码)


var timeLeft=10;
函数timedCount(){
document.getElementById(“txt”).value=timeLeft;
如果(时间限制){
setTimeout(函数(){
时间限制--;
timedCount();
}, 1000);
}否则{
window.location=https://w3schools.com';
}
}
timedCount();

我相信这可能是一种方法

<!DOCTYPE html> 
<html> 
<body>

<input type="text" id="txt">

<body onload="startCount()">

<script>
var c = 10; 
var t ; 
var timer_is_on = 0;

function timedCount() {   
  document.getElementById("txt").value = c;   
  c--;   
  t = setTimeout(timedCount, 1000);
  if(c <= 0) {
    window.location.href = "https://www.w3schools.com/";
  }
}

function startCount() {   
  if (!timer_is_on) {
      timedCount();   
  }
}

</script>

</body> 
</html>

var c=10;
变量t;
var定时器_为_on=0;
函数timedCount(){
document.getElementById(“txt”).value=c;
c--;
t=设置超时(timedCount,1000);

如果(c我相信这可能是一种方法

<!DOCTYPE html> 
<html> 
<body>

<input type="text" id="txt">

<body onload="startCount()">

<script>
var c = 10; 
var t ; 
var timer_is_on = 0;

function timedCount() {   
  document.getElementById("txt").value = c;   
  c--;   
  t = setTimeout(timedCount, 1000);
  if(c <= 0) {
    window.location.href = "https://www.w3schools.com/";
  }
}

function startCount() {   
  if (!timer_is_on) {
      timedCount();   
  }
}

</script>

</body> 
</html>

var c=10;
变量t;
var定时器_为_on=0;
函数timedCount(){
document.getElementById(“txt”).value=c;
c--;
t=设置超时(timedCount,1000);

如果(c)要重新编辑页面,请设置
window.location=“”https://www.w3schools.com“
timer\u是开着的
永远都是0,所以
如果(!timer\u是开着的){…”
是无用的,因为0的计算结果始终为false。您没有在代码中的任何地方调用
myFunction
,因此不清楚代码将如何立即重定向。请回答问题以显示代码的实际情况。@adnbsr
location.replace(url)
也将重定向,它只是替换浏览器历史记录中的当前URL。请编辑您的问题并添加完整的代码,包括在何处使用新功能进行实际重定向?以及为什么html中有2个元素?要重定向页面,请设置
window.location=“”https://www.w3schools.com"
timer\u是开着的
永远都是0,所以
如果(!timer\u是开着的){…}
是无用的,因为0的计算结果始终为false。您没有在代码中的任何地方调用
myFunction
,因此不清楚代码将如何立即重定向。请回答问题以显示代码的实际情况。@adnbsr
location.replace(url)
也将重定向,它只会替换浏览器历史记录中的当前URL。请编辑您的问题并添加完整的代码,包括在何处使用新功能进行实际重定向?以及为什么html中有2个元素?