内联和非内联JavaScript之间的不同行为
我正在尝试建立一个计时器。请比较两种情况(第一种有效,第二种无效):内联和非内联JavaScript之间的不同行为,javascript,html,jsfiddle,Javascript,Html,Jsfiddle,我正在尝试建立一个计时器。请比较两种情况(第一种有效,第二种无效): 内联javascript 非内联javascript 问题出在哪里?第二个将timedCount函数包装在jQueryready函数中,因此在全局范围内不可用 var seconds = 0; timedCount = function() { $("#txt").val(seconds); seconds += 1; setTimeout("timedCount();",1000); }
- 内联javascript
- 非内联javascript
问题出在哪里?第二个将
timedCount
函数包装在jQueryready
函数中,因此在全局范围内不可用
var seconds = 0;
timedCount = function() {
$("#txt").val(seconds);
seconds += 1;
setTimeout("timedCount();",1000);
}
修复:这是jsFiddle的“JavaScript部分”用户经常遇到的问题。您可以看到,放入“JavaScript部分”的代码被包装在一个用作
load
处理程序的函数中,因此在第二个示例中,实际输出结果如下:
<script type='text/javascript'>
//<![CDATA[
$(window).load(function(){
var seconds = 0;
function timedCount() {
$("#txt").val(seconds);
seconds += 1;
setTimeout("timedCount()",1000);
}
});
//]]>
</script>
使用timedCount=function(){…}使timedCount
成为一个全局函数代码>
这只会使timedCount
成为一个全局值,因此当setTimeout
尝试计算timedCount()代码>从全局范围中,它会成功,因为全局范围中有一个timedCount
函数
var seconds = 0;
timedCount = function() {
$("#txt").val(seconds);
seconds += 1;
setTimeout("timedCount();",1000);
}
不知道你在找一个详细的解释!