为了账号安全,请及时绑定邮箱和手机立即绑定

这函数调用我一直看不大懂,所以想问问大家,我这样理解对不对?

这函数调用我一直看不大懂,所以想问问大家,我这样理解对不对?

德玛西亚99 2022-11-21 17:17:11

代码是这样的:
var n;
n=1;
setTimeout('change_img()',6000);
function change_img()
{
if(n>2) n=1
setTimeout('setFocus1('+n+')',6000);
n++;
t=setTimeout('change_img()',6000);
}
首先定义变量n然后对其进行赋值,开始计时(注:假设为第0秒时)当6秒后(注:第6秒)执行函数setTimeout('change_img()',6000),在执行过程中因为要调用到函数change-img(),所以要先对函数change-img()进行处理,由于开始给n赋值为1,
所以当n=1时,开始执行函数setTimeout('setFocus1('+n+')',6000),得到的结果是6秒后(注:第12秒)调用函数setFocus1(1),
然后n自增为2,接着返回函数setTimeout('setFocus1('+n+')',6000)得到的结果为6秒后(注:第12秒)调用函数setFocus1(2),
又因为函数setFocus1的参数使用了连接符“+n+”,所以当时间到达第12秒时同时调用setFocus1(1)和setFocus1(2)这两个函数,因为设置了if(n>2),所以当n=3时,循环语句结束。
但是由于设置了t=setTimeout('change_img()',6000);所以在循环语句结束的时候开始重新计时,进行下一轮的循环(重复上面的过程)
不知道我这样理解对不对,不是很清楚,另外假如函数setFocus1的参数是n而不是+n+的话是不是表示在上面的语句循环中,最后只会调用最后一个函数,而其他的调用函数被覆盖(也就是说只调用setFocus1(2)而不会调用setFocus1(1))?

查看完整描述

1 回答

?
慕的地6264312

TA贡献1563条经验 获得超6个赞

解决方法捕获按键的事件。
<script language="javascript"> 
function test(event) { 
event = event || window.event; 
if(event.keyCode==13) { alert("你按了回车") } 
if(event.shiftKey==true) { alert("你按了shift") } 
if(event.ctrlKey==true) { alert("你按了ctrl") }
if(event.altKey==true) { alert("你按了alt") }} </script>

每个按键都对应一个ASCII码 比如回车的ASCII码是13 每个按键的ASCII码你可以在百度上查。

setTimeout() 方法的返回值是一个唯一的数值,如果你想要终止 setTimeout() 方法的执行,那就必须使用 clearTimeout() 方法来终止,而使用这个方法的时候,系统必须知道你到底要终止的是哪一个 setTimeout() 方法 (因为你可能同时调用了好几个 setTimeout() 方法),这样 clearTimeout() 方法就需要一个参数,这个参数就是 setTimeout() 方法的返回值 (数值),用这个数值来唯一确定结束哪一个 setTimeout() 方法 

你的setTimeout(function(){location.reload();},1000)会返回一个值。
比如你要用回车结束setTimeout js代码如下。
function test(event,id) { 
event = event || window.event; 
if(event.keyCode==13) { 
clearTimeout(id); 
}
}
这里的ID 就是你 setTimeout方法的返回值。了解了吗?


查看完整回答
反对 回复 6天前
  • 1 回答
  • 0 关注
  • 8 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信