在函数内部添加延迟

时间:2019-05-23 12:08:27

标签: javascript php jquery html

我发现了一个不错的五彩纸屑脚本,当我的代码片段中宣布了获胜者时,我将其用作一种效果。

我已经将五彩纸屑开始绑定到一个名为“ startConfetti”的按钮。

我还有一个不同的按钮“ bt1”,它开始了获胜者的选择过程。

现在,我有一个脚本,当我单击“ bt1”时单击“ startConfetti”。

 $('#container').on("click", '#bt1', function (e) {
        $('#startConfetti').trigger(e.type);
    });

现在我要在单击“ startConfetti”之间添加一个延迟。

所以这是一些代码。 当您单击“ startConfetti”时,这将启动五彩纸屑

function StartConfetti() {
          W = window.innerWidth;
          H = window.innerHeight;
          canvas.width = W;
          canvas.height = H;
          (function animloop() {
              if (animationComplete) return null;
              animationHandler = requestAnimFrame(animloop);
              return Draw();
          })();
      }

这是我的按钮

 <div id="container">
            <button id="startConfetti" style="display: none" ></button>    
            <button id="bt1" class="button button5">< R30K</button>
            <button id="bt2" class="button button5">R30K - R70K</button>
            <button id="bt3" class="button button5">> R70K</button>
        </div>

和按钮初始化

function InitializeButton() {
          $('#startConfetti').click(InitializeConfetti);
          $('#stopConfetti').click(DeactivateConfetti);
          $('#restartConfetti').click(RestartConfetti);
      }

以及startConfetti初始化

function InitializeConfetti() {
          canvas.style.display = 'block';
          particles = [];
          animationComplete = false;
          for (var i = 0; i < mp; i++) {
              var particleColor = particleColors.getColor();
              particles.push(new confettiParticle(particleColor));
          }
          StartConfetti();
      }

我已经尝试过-

 $('#bt1').on("click", '#startConfetti', function (e) {
 }); setTimeout(function() {
    $('#startConfetti').trigger('click');
 }, 29000);

但这会使脚本自行运行,并在29秒后自动延迟页面加载时的脚本。

我也尝试添加

setTimeout(startConfetti, 29000);

在代码中的几个地方,但仍然没有影响。

要实现“ bt1”并单击“ startConfetti”按钮并在“ startConfetti”脚本运行之前添加延迟,我在做什么或在做什么错了?

2 个答案:

答案 0 :(得分:1)

在click事件内执行超时,例如:

if($row['total_money']  >10){
          echo "Enough";
        } else {
            echo "Not Enough Money";
      }

答案 1 :(得分:1)

您将超时置于事件回调之外。因此,单击将不会产生任何结果,并且超时将在代码加载后立即开始。

只需将超时放入事件回调中即可。

[- #]

如果您希望每当调用函数时发生延迟,另一种选择就是将startConfetti函数包装在一个超时中。

$('#bt1').on("click", '#startConfetti', function (e) {
     setTimeout(function() {
        $('#startConfetti').trigger('click');
     }, 29000);
 });