如何在一段时间内运行JavaScript代码段?

时间:2017-09-18 05:04:19

标签: javascript

如何运行以下代码的document.getElementById("myLinkID").onclick = '';部分10秒? Javascript运行一个持续10秒的CSS动画,我不希望代码再次运行,直到动画结束。任何帮助将不胜感激。

function myFuction() {

  var myVar = document.getElementById('myDivID');

  if (myVar.style.display === 'none') {
    myVar.style.display = 'block';
    document.getElementById('myLinkID').onclick = '';
  }

  else {
    myVar.style.display = 'none';
  }
}

我尝试过以下但它只是冻结了。

function myFunction() {

  var myVar = document.getElementById('myDivID');
  var myVar2 = true;

  while (myVar2 ) {
    document.getElementById('myLinkID').onclick = '';
  }

  setTimeout(function myFunction() {
    myVar2 = false;
  }, 10000);

  if (myVar.style.display === 'none') {
    myVar.style.display = 'block';

  } else {
    myVar.style.display = 'none';
  }
}

更新已修复:

function myFuction() {

  var myVar = document.getElementById('myDivID');

  setTimeout(function() {
    myVar.style.display = 'none';
    document.getElementById('myLinkID').onclick = myFunction;
  }, 10000);

  if (myVar.style.display === 'none') {
    myVar.style.display = 'block';
    document.getElementById('myLinkID').onclick = '';
  }

  else {
    myVar.style.display = 'none';
  }
}

2 个答案:

答案 0 :(得分:1)

无需在循环中运行document.getElementById("myLinkID").onclick = '';。将onclick设置为空字符串后,在您再次更改之前它将不会执行任何操作。因此,运行该语句一次,然后设置超时10秒,以便在动画结束后恢复onclick处理程序。

答案 1 :(得分:-1)

尝试使用webkitAnimationEnd事件来确定此函数是否已执行