以下代码使用函数setInterval()来不断更新“时钟”。唯一的区别在于函数调用setInterval()。
当我从
更改setInterval参数时setInterval('updateTime()',1000);
到
setInterval(updateTime(),1000);
[从单引号到无引号],它不起作用。任何人都可以向我解释这个吗?
单引号:
<head>
<script>
function updateTime(){
var today = new Date();
var h = today.getHours();
var m = today.getMinutes();
var s = today.getSeconds();
var now= h+':'+m+':'+s;
document.getElementById('timer').innerHTML = h+':'+m+':'+s;//set the text in 'timer' id below to the date
setInterval('updateTime()', 1000); //////SEE THIS LINE//////
}
</script>
</head>
<body>
<p id='timer'> Time </p>
<script>
updateTime();
</script>
</body>
没有引言:
<head>
<script>
function updateTime(){
var today = new Date();
var h = today.getHours();
var m = today.getMinutes();
var s = today.getSeconds();
var now= h+':'+m+':'+s;
document.getElementById('timer').innerHTML = h+':'+m+':'+s;//set the text in 'timer' id below to the date
setInterval(updateTime(), 1000);//////SEE THIS LINE//////
}
</script>
</head>
<body>
<p id='timer'> Time </p>
<script>
updateTime();
</script>
</body>
可以在此处找到用于测试的在线js控制台:https://jsfiddle.net/
答案 0 :(得分:6)
setInterval('updateTime()', 1000);
您将字符串作为第一个参数传递给setInterval。您需要传递函数引用
正确的方式
setInterval(updateTime, 1000)
答案 1 :(得分:1)
尝试这样做
setInterval(updateTime, 1000);
没有()
现在提出问题的原因。
Setinterval函数评估内容如果字符串,执行,如果函数名称
要解释为什么执行 updateTime(),括号立即是因为它尝试执行输出区间循环中的updateTime函数,如果您没有返回任何内容,则将是未定义的,如果返回字符串将被视为函数名称。其他任何事情都会被忽视或抛出错误。
希望有所帮助
答案 2 :(得分:0)
如果您将第二个代码更改为
setInterval(updateTime,1000);
它应该有用。原因是因为^你在你的答案中传递一个函数指针设置间隔,updateTime()将updateTime的返回值传递给setInterval。