【问题标题】:I'm not sure why but it just says "Done!" 3 seconds before it should say "Purchasing..." [duplicate]我不知道为什么,但它只是说“完成!”在它应该说“购买......”前 3 秒 [重复]
【发布时间】:2020-07-21 22:22:28
【问题描述】:
function Purchase() {
    document.getElementById("Button1").innerHTML = "Purchasing..."
    window.setTimeout(Purchase(), 30000)
    document.getElementById("Button1").innerHTML = "Done!"
}

基本上我想做的是做一个有趣的小购买代码测试(虽然我知道它实际上不会买任何东西)。

【问题讨论】:

  • 从 Purchase() 中删除 ()
  • 同样 done 在你调用 setTimeout 后立即执行,所以将 done 移到函数 Purchase 的末尾
  • 认为您的代码在做什么?你觉得setTimeout 这条线会做什么?

标签: javascript settimeout


【解决方案1】:
function Purchase() {
    document.getElementById("Button1").innerHTML = "Purchasing..."
    window.setTimeout(() => {
      document.getElementById("Button1").innerHTML = "Done!"
    }, 3000)  
}

这是你需要的吗?

您的帖子中有几个问题: 30000 以毫秒为单位是 30 秒

此外,您在 Purchase 函数中调用 Purchase() 使您的函数递归,并且会导致 Purchase 被一遍又一遍地执行

另外,setTimeout 将函数引用(不是函数执行)作为第一个参数,该参数将在您设置为第二个参数的时间间隔之后执行。在setTimeout(Purchase()) 中添加() 将导致Purchase 函数立即执行。

【讨论】:

  • 哦,谢谢,这很好用!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-27
  • 2018-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多