繁体   English   中英

为什么setTimeout()不起作用?

[英]Why won't setTimeout() work?

我试图让我的函数在运行前等待3秒钟。 看起来确实很简单,但是由于某种原因,我不断得到:

未定义slideFunction

控制台中的错误。 如果我仅调用该函数而不尝试使用setTimeout那么它将起作用。 怎么了

window.onclick = slideFunction;

setTimeout(slideFunction, 3000); { 
  document.getElementById('#img3').style.marginLeft = "100px";
}

它可以工作,但是您要调用的函数需要定义并成为一个函数。 例:

 function slideFunction(){ document.getElementById('img3').style.marginLeft = "100px"; } document.body.onclick = () => setTimeout(slideFunction, 3000); 
 #img3 { width: 50%; border: 1px solid red; height: 100px; transition: margin-left .3s cubic-bezier(.4,0,.2,1); } body,html {height: 100%;margin: 0;} 
 <div id="img3"></div> <button onclick="document.location.reload(true)">Reload</button> 

一些问题:

  • .getElementById('#img3')不正确。 它是.getElementById('img3').querySelector('#img3') ,除非您元素的id确实是#img3即: <img id="#img123" src> ,在这种情况下,它是无效的:

ID和NAME令牌必须以字母([A-Za-z])开头,后跟任意数量的字母,数字([0-9]),连字符(“-”),下划线(“ _”) ,冒号(“:”)和句点(“。”)。

  • window.onclick应该是document.body.onclick

您正在寻找的整个解决方案:

function slideFunction(){
  document.getElementById('#img3').style.marginLeft = "100px";
}
window.onclick = slideFunction;

setTimeout(slideFunction, 3000);

感谢大家的帮助。 我确实设法使其能够按需使用

  function slideFunction(){
  document.getElementById('#img3').style.marginLeft = "100px";
  }

  document.body.onclick = () => setTimeout(slideFunction, 3000);
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM