html+javascript 执行顺序问题
<html><head><scripttype="text/javascript">varweek=newArray("星期日","星期一","星期二","星期三","星...
<html>
<head>
<script type="text/javascript">
var week=new Array("星期日","星期一","星期二","星期三","星期四","星期五","星期六");
function funcTime(){
var d=new Date();
var nd=document.getElementById("top");
nd.innerHTML=d.getFullYear()+"年"+(d.getMonth()+1)+"月"+d.getDate()+"日"+d.getHours()+"时"+d.getMinutes()+"分"+d.getSeconds()+"秒"+week[d.getDay()];
}
setInterval("funcTime()",1000);
</script>
</head>
<body onload="funcTime();">
<div id="top"></div>
</body>
</html>
以上是一个简单的时钟页面,body部分在onload的时候调用了funcTime(),setInterval在funcTime()外面,但调用了funcTime后发现页面中的时钟就会开始走动,即setInterval已经生效。不知道原理是什么样的?执行顺序是怎么样的?谢谢 展开
<head>
<script type="text/javascript">
var week=new Array("星期日","星期一","星期二","星期三","星期四","星期五","星期六");
function funcTime(){
var d=new Date();
var nd=document.getElementById("top");
nd.innerHTML=d.getFullYear()+"年"+(d.getMonth()+1)+"月"+d.getDate()+"日"+d.getHours()+"时"+d.getMinutes()+"分"+d.getSeconds()+"秒"+week[d.getDay()];
}
setInterval("funcTime()",1000);
</script>
</head>
<body onload="funcTime();">
<div id="top"></div>
</body>
</html>
以上是一个简单的时钟页面,body部分在onload的时候调用了funcTime(),setInterval在funcTime()外面,但调用了funcTime后发现页面中的时钟就会开始走动,即setInterval已经生效。不知道原理是什么样的?执行顺序是怎么样的?谢谢 展开
5个回答
推荐于2016-03-23 · 知道合伙人软件行家
关注
展开全部
Javascript是执行顺序是至上而下的,除非特别说明, Javascript代码不会等到页面加载完毕后才执行。
例如:
一个网页里含有以下HTML代码
<div id="ele">welcome to www.jb51.net</div>
如果在这行HTML代码前,加入如下Javascript代码:
<script type="text/javascript">
document.getElementById('ele').innerHTML= 'welcome to my blog';
</script>
运行该页面,会得到这样的错误信息:“document.getElementById(‘ele') is null。”原因是,当上面的javascript运行时,页面上还没有ID为‘ele'的DOM元素。
解决办法有两种:
1. 把javascript代码放在HTML代码之后:
<div id="ele">welcome to www.jb51.net</div>
<script type="text/javascript">
document.getElementById('ele').innerHTML='welcome to my blog';
</script>
2. 等到在网页加载完毕后,运行该javascript代码。可以使用传统的解决办法(load):首先加HTML的body加入“<body load="load()”>,”然后在load()函数里调用上述javascript代码。这里要着重介绍的是用jQuery来实现:
<script>
$(document).ready(function(){
document.getElementById('ele').innerHTML= 'welcome to my blog';
});
</script>
//当然,既然用到了jQuery,更简单的写法是:
<script>
$(document).ready(function(){
$('#ele').html('welcome to my blog'); //这里也可用.text()方法
});
</script>
可以把上述jQuery代码放在页面的任何位置,它总是等到页面加载完毕后才执行。
展开全部
代码一般是从上而下加载的,但是执行的顺序可不一定是这样!
setInterval("funcTime()",1000);
这个函数就是说,当这行代码读完一秒钟之后再执行funcTime()为个函数;而funcTime()这个函数,在在之前就已经加载进来了,但是没有执行,也就是说,光加载进来不被调用的话,这个函数是不执行的。所以setInterval("funcTime()",1000);和funcTime()编写的顺序,一般是可以互换位置的。
而<body onload="funcTime();">的意思就是说当页面全部加载完成后,再执行funcTime()这个函数。也就是说,在没加载完成这个网页时,虽然加载到了<body onload="funcTime();">
这行代码,也不会执行funcTime()为个函数。假设在加载到<body onload="funcTime();">
这行代码后一个小时,整个页面才加载完的话,funcTime()只能在这一个小时之后,才会执行。
不知道这么说,说明没有!?
setInterval("funcTime()",1000);
这个函数就是说,当这行代码读完一秒钟之后再执行funcTime()为个函数;而funcTime()这个函数,在在之前就已经加载进来了,但是没有执行,也就是说,光加载进来不被调用的话,这个函数是不执行的。所以setInterval("funcTime()",1000);和funcTime()编写的顺序,一般是可以互换位置的。
而<body onload="funcTime();">的意思就是说当页面全部加载完成后,再执行funcTime()这个函数。也就是说,在没加载完成这个网页时,虽然加载到了<body onload="funcTime();">
这行代码,也不会执行funcTime()为个函数。假设在加载到<body onload="funcTime();">
这行代码后一个小时,整个页面才加载完的话,funcTime()只能在这一个小时之后,才会执行。
不知道这么说,说明没有!?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
代码一般是从上而下加载的,但是执行的顺序可不一定是这样!
setInterval("funcTime()",1000);
这个函数就是说,当这行代码读完一秒钟之后再执行funcTime()为个函数;而funcTime()这个函数,在在之前就已经加载进来了,但是没有执行,也就是说,光加载进来不被调用的话,这个函数是不执行的。所以setInterval("funcTime()",1000);和funcTime()编写的顺序,一般是可以互换位置的。
而<body onload="funcTime();">的意思就是说当页面全部加载完成后,再执行funcTime()这个函数。也就是说,在没加载完成这个网页时,虽然加载到了<body onload="funcTime();">
这行代码,也不会执行funcTime()为个函数。假设在加载到<body onload="funcTime();">
这行代码后一个小时,整个页面才加载完的话,funcTime()只能在这一个小时之后,才会执行。
不知道这么说,说明没有!?
setInterval("funcTime()",1000);
这个函数就是说,当这行代码读完一秒钟之后再执行funcTime()为个函数;而funcTime()这个函数,在在之前就已经加载进来了,但是没有执行,也就是说,光加载进来不被调用的话,这个函数是不执行的。所以setInterval("funcTime()",1000);和funcTime()编写的顺序,一般是可以互换位置的。
而<body onload="funcTime();">的意思就是说当页面全部加载完成后,再执行funcTime()这个函数。也就是说,在没加载完成这个网页时,虽然加载到了<body onload="funcTime();">
这行代码,也不会执行funcTime()为个函数。假设在加载到<body onload="funcTime();">
这行代码后一个小时,整个页面才加载完的话,funcTime()只能在这一个小时之后,才会执行。
不知道这么说,说明没有!?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
顺序当然是自上而下的,但是onload里的是页面加载最后执行。
你这个页面页面为调用完成之前已经打开计时了,页面加载后,调入funcTime时钟开始走动
你这个页面页面为调用完成之前已经打开计时了,页面加载后,调入funcTime时钟开始走动
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询