停止执行javascript直到onclick

时间:2013-12-24 13:06:16

标签: javascript onclick wait

我正在寻找一种停止执行javascript直到onclick的方法。

这是我的剧本,但我不知道如何等到onclick。

<html>
<head>
<script type="text/javascript">

var stat = "*";

function setstat(but)  {
    stat = but;
}

function start() {
    alert('start');
    ...
    ...
    /* ??????? wait until stat != '*' ???????? */
    alert(stat);
    ...
    ...
}   
</script>

</head>
<body>
<input type='button' style="width: 100px;" value="Start" onclick="start();">
<br><br>
<input type='button' style="width: 100px;" value="Yes" onclick="setstat('yes')"> 
&nbsp;&nbsp;
<input type='button' style="width: 100px;"` ``value="No" onclick="setstat('no')">`
</body>
</html>

3 个答案:

答案 0 :(得分:1)

你必须在事件中“思考”。当stat设置为“yes”或“no”时,看起来你想在start函数的某个点执行代码。

每个按钮onclick都在调用一个函数,更确切地说,它实际上需要一个语句。当你按下是按钮时,为什么不重构你的代码呢?

说清楚我的观点:

var stat = '*';

function start() {
  // code

  //until stat != '*';

  // move this code here -->
}

function setstat(but)  {
  stat = but;
  doReallyStart();
}

function doReallyStart() {
  // to here <--
}

这样做也会更具可读性。

答案 1 :(得分:0)

也许setTimeout和clearTimeout可以满足您的需求。 你可以把你的js代码放在setTimeout,onClick事件触发器clearTimeout

答案 2 :(得分:0)

var execute = false;
var timeoutPolling = 1000;
var fn = function() {
  console.log('Hello');
};
var it = setInterval(function() {
  if (execute) {
    fn();
    clearInterval(it);
  }
}, timeoutPolling);

这适用于我的Chrome开发工具,您只需启用/禁用execute标记。