我正在尝试一个简单的html页面无限期地计数。但由于某种原因,我的第二个变量没有显示出来。第二个变量是嵌入式javascript计时器如您所见,第一个变量显示,但不显示第二个变量。道歉,我是初学者。
https://dl.dropboxusercontent.com/u/44188718/time.html
<script>
var test;
test = 123;
</script>
<script>document.write(test)</script>
<script>
var time;
time = 0;
function startTimer()
{
window.setTimeout(add(), 60 * 1000);
}
add()
{
var += 1;
}
</script>
<script>document.write(time)</script>
答案 0 :(得分:1)
您的中间脚本元素包含多个错误。
这一行:
window.setTimeout(add(), 60 * 1000);
应该是:
window.setInterval(add, 60 * 1000);
setTimeout()
只调用一次函数。 setInterval()
重复调用一个函数。另请注意,我在()
之后删除了add
- 使用括号立即调用该函数并将其结果传递给setTimeout()
或setInterval()
,但是您想通过函数本身只是使用没有括号的函数名称。 (并且window.
部分是可选的)。
然后这一行:
add()
应该是:
function add()
而且:
var += 1;
应该是:
time += 1;
// OR
test += 1;
(我不确定你打算增加哪个变量。)
此外,您永远不会调用startTimer()
函数。
最后,在add()
函数中,您需要实际输出值。 document.write()
几乎不是一个好主意,因此我建议您在页面上创建一个元素来保存数字并更新其内容:
<div id="timer"></div>
document.getElementById("timer").innerHTML = time; // or = test; (whichever var you want)
演示以上所有内容:http://jsfiddle.net/Y3XMk/
或与简化代码相同的效果:http://jsfiddle.net/Y3XMk/1/
答案 1 :(得分:1)
您的代码中存在一些误解,因此我将尝试通过它们。
定义函数时必须指定function
关键字。在你的情况下:
add(){ ... }
应该是:
function add() { ... }
然后,您可以通过setTimeout
代码安全地调用它。
使用关键字var
,您基本上告诉您即将定义变量for the current scope。首先,由于当前范围仍为window
(the global scope),因此您无需添加var
。其次,您必须在更改时使用变量名称,或添加变量名称。在你的情况下:
var += 1
应该是:
时间+ = 1
当你调用它们时,函数会被调用一次。在您的情况下,document.write(time)
将在解析文档时被调用一次,因此会在您的文档中写入1
。您必须在添加功能中调用write
方法,以便在每个间隔显示数字。所以:
function add(){
time += 1;
document.write(time);
}
setTimeout
调用指定的回调函数一次,经过一段时间后,我相信您正在寻找setInterval
。您可以像这样使用它:
function startTimer(){
window.setInterval(add,60 * 1000);
}
但是不要忘记调用你的函数,以便启动计时器。
以下是您的代码示例(它每秒都有效):
答案 2 :(得分:0)
您的代码存在很多问题。
我相信你要做的是:
<script>
var time = 0;
window.setInterval(function(){
document.write(time);
time++;
}, 60*1000);
</script>
请在此处查看工作演示:
只需点击“运行”。