求助:setTimeout不执行

gorphone 2010-04-07 01:16:53
window.onload=init;

function init(){
var alink =null;
alink = document.getElementById("nav").getElementsByTagName("A");

for(var i=0;i<alink.length;++i)
{
var mar = 35;
var time1=null;
while(mar > 0)
{
time1=window.setTimeout("",15); //此处不执行,直接跳过,返回为undefined
alert(time1);
mar=mar-5;

alink[i].style.marginTop=""+mar+"px";
}
}
}

新手,谢谢帮忙!
...全文
607 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
gorphone 2010-04-08
  • 打赏
  • 举报
回复
谢谢大家了,我自己再把基础好好看下吧
gorphone 2010-04-08
  • 打赏
  • 举报
回复
搞明白了,是异步执行的问题,再次感谢大家
春春 2010-04-07
  • 打赏
  • 举报
回复
setTimeout("你定义的函数名",毫秒数);
狂想者 2010-04-07
  • 打赏
  • 举报
回复
2楼说的可以。。。。。。。
vvviop 2010-04-07
  • 打赏
  • 举报
回复
setTimeout 已经开了一个线程去执行了,不会顺序执行的

这个时候,你需要将你继续要执行的代码放到 第一个参数里面去,过了 第二个参数 的毫秒 之后,就会执行第一个参数里面的内容。。
wugui414 2010-04-07
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 happy664618843 的回复:]
setTimeout("init()",50)
或者setTimeout(init,50)
[/Quote]
init干什么用的?
gorphone 2010-04-07
  • 打赏
  • 举报
回复
我是要做一个横排的导航,在加载结束后导航项依次弹出。
如楼上所说,我也给过它一个事件(尝试过6楼的做法),但它根本就不去调用这个事件,难道是其他地方出了问题?
孟子E章 2010-04-07
  • 打赏
  • 举报
回复
不明白你要干啥?你是要延时?那么写是不行的
vnetcbd 2010-04-07
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 gorphone 的回复:]

9楼的代码我看过了,非常感谢,但是不能实现我想要的效果。有谁能解释一下我失败的原因吗,settimeout中不能把""当做空语句执行吗,另问一下,为什么要将<a>标签"display:block",再次感谢
[/Quote]


display:block; 为不为 block 跟执行这段代码没关系

楼主你首先的明白 setTimeout运行机制

setTimeout(code,millisec);
code方法不能为空必须得有个事件
millisec延时的时间

setTimeout(move,10);

gorphone 2010-04-07
  • 打赏
  • 举报
回复
9楼的代码我看过了,非常感谢,但是不能实现我想要的效果。有谁能解释一下我失败的原因吗,settimeout中不能把""当做空语句执行吗,另问一下,为什么要将<a>标签"display:block",再次感谢
happy664618843 2010-04-07
  • 打赏
  • 举报
回复
setTimeout("init()",50)
或者setTimeout(init,50)
孟子E章 2010-04-07
  • 打赏
  • 举报
回复


<script type="text/javascript">
window.onload=init;
var alink =null;
var time1=null;
var mar = 350;
function init()
{
alink = document.getElementById("nav").getElementsByTagName("A");
for(var i=0;i<alink.length;++i)
{
if(mar>0)
alink[i].style.marginTop=mar+"px";

mar-=5;
}
setTimeout("init()",50)
}
</script>
<div id="nav">
<a href="" style="display:block">xx</a> <a href="" style="display:block">nnn</a>
</div>
linxisheng 2010-04-07
  • 打赏
  • 举报
回复
去下载一本JavaScript.chm 的文档
当字典用 对你不错
gorphone 2010-04-07
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 shan1119 的回复:]

引用 3 楼 gorphone 的回复:
我也试过将mar=mar-5放入引号内,但是结果一样的,不执行

try:
time1=window.setTimeout(function(){mar=mar-5;},15); //此处不执行,直接跳过,返回为undefined
[/Quote]
试过了,死循环,也就是说此时连“mar=mar-5;”不执行了。什么原因????
shan1119 2010-04-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 gorphone 的回复:]
我也试过将mar=mar-5放入引号内,但是结果一样的,不执行
[/Quote]
try:
time1=window.setTimeout(function(){mar=mar-5;},15); //此处不执行,直接跳过,返回为undefined
wubianhaifeng 2010-04-07
  • 打赏
  • 举报
回复
代码可以执行,不知道楼主所说的不能执行时什么意思?
mytigo 2010-04-07
  • 打赏
  • 举报
回复
。。。。。。我建议你从头开始学js
gorphone 2010-04-07
  • 打赏
  • 举报
回复
我也试过将mar=mar-5放入引号内,但是结果一样的,不执行
mytigo 2010-04-07
  • 打赏
  • 举报
回复
time1=window.setTimeout("",15);

你这个用法就是错误的。

语法是setTimeout(code,millisec),隔millisec这么多毫秒后执行code所代表的代码,不是在这里中断运行。
shan1119 2010-04-07
  • 打赏
  • 举报
回复
try:
time1=window.setTimeout(function(){alert(1);},15);

87,922

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧