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

JavaScript SetTimeout输入参数的问题

JavaScript SetTimeout输入参数的问题

胡说叔叔 2018-09-14 14:09:25
有一段html的小代码,如下:function init(){    var planet=document.getElementById("greenplanet");     planet.innerHTML="RED ALERT: hit by phaser fire!"     setTimeout(planet.setAttribute("class","bluetext"),1000);     setTimeout(planet.setAttribute("class","redtext"),2000);然而,这样执行时,会直接将Attribute变成redtext,没有倒计时1000ms(我试过用5000ms,确实没有倒计时),bluetext这一句也没有执行。我试着将代码改成:function init2(){    var planet=document.getElementById("greenplanet");     planet.innerHTML="RED ALERT: hit by phaser fire!";    function a(){         planet.setAttribute("class","bluetext");     }    function b(){         planet.setAttribute("class","redtext");     }     setTimeout(a,1000);     setTimeout(b,2000); }就可以了。两个setAttribute分别在倒计时后触发。前后两段代码的区别,就是后一段将setAttribute代码直接封装到一个函数内。可是setTimeOut的第一个参数,不是既可以是函数,也可以是代码段码?
查看完整描述

1 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

根据标准,你确实可以传入一个回调函数(function)或一个代码片段(code)作为第一个参数,但是如果是code,你需要用引号包裹起来。

function setTO() {
  setTimeout("console.log(100)", 10000)
}// 10s后打印100

另外,建议不要传入code型的参数,理由和eval一样。


参考: window.setTimeout | MDN


查看完整回答
反对 回复 2018-10-21
  • 1 回答
  • 0 关注
  • 579 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号