【问题标题】:Button onclick performing multiple actions按钮 onclick 执行多个操作
【发布时间】:2014-03-07 12:34:20
【问题描述】:

我有这个代码:

var hour = parseInt(js_arr[j].substring(0, 1));
var min = parseInt(js_arr[j].substring(3, 4));
var seconds = parseInt(js_arr[j].substring(6, 7));
var mil_sec = parseInt(js_arr[j].substring(9, 11));
var time = (hour * 3600000) + (min * 60000) + (seconds * 1000) + mil_sec;

function timeout() {
    setTimeout(function () {

        if (true) {
            document.getElementById('subs').innerHTML = js_arr[i];
            i = i + 4;
            j = j + 4;
            hour = parseInt(js_arr[j].substring(0, 1));
            min = parseInt(js_arr[j].substring(3, 4));
            seconds = parseInt(js_arr[j].substring(6, 7));
            mil_sec = parseInt(js_arr[j].substring(9, 11));
            time = (hour * 3600000) + (min * 60000) + (seconds * 1000) + mil_sec;

            timeout();
        } else {
            timeout();
        }

    }, time);
}

在 javascript 代码之前,我有一个 onclick="timeout(); 按钮。

此按钮允许播放字幕。我还想做的是通过单击同一个按钮来停止播放这些字幕。如果有人可以提供帮助,那就太好了!

非常感谢。

【问题讨论】:

  • 那么,您想在同一个按钮上启动和停止功能吗?
  • 切换逻辑可能会有所帮助? stackoverflow.com/questions/3047755/…
  • 你应该使用

标签: javascript jquery function if-statement onclick


【解决方案1】:

添加一个指示超时是否处于活动状态的变量。在timeout()-函数中,检查这个变量并且只有当它为真时才会启动另一个循环。要启动和停止,您只需设置(并调用 timeout())或重置变量。

var hour = parseInt(js_arr[j].substring(0,1));
var min = parseInt(js_arr[j].substring(3,4));
var seconds = parseInt(js_arr[j].substring(6,7));
var mil_sec = parseInt(js_arr[j].substring(9,11));
var time = (hour*3600000)+(min*60000)+(seconds*1000)+mil_sec;

var timeOutRunning = false;

function startTimeOut() {
  timeOutRunning = true;
  timeout();
}

function stopTimeOut() {
  timeOutRunning = false;
}

function timeout() {
  if(timeOutRunning) {
    setTimeout(function() {
      document.getElementById('subs').innerHTML = js_arr[i];
      i=i+4;
      j=j+4;
      hour = parseInt(js_arr[j].substring(0,1));
      min = parseInt(js_arr[j].substring(3,4));
      seconds = parseInt(js_arr[j].substring(6,7));
      mil_sec = parseInt(js_arr[j].substring(9,11));
      time = (hour*3600000)+(min*60000)+(seconds*1000)+mil_sec;

      timeout();
    }, time);
  }
}

然后是onclick函数:

onclick="if(timeOutRunning) { stopTimeOut(); } else { startTimeOut(); }"

【讨论】:

  • 这段代码看起来很完美,但我想我知道为什么它仍然不起作用。那个 不会让我改变它。即使我用按钮删除了这一行,按钮仍然存在。任何想法为什么会发生这种情况?
  • 不,那一定是一个完全不相关的问题。你保存你的文档了吗?您是在本地开发,但在网上查看并忘记上传吗?缓存问题?
  • 没关系,它实际上帮助我解决了我遇到的主要问题,非常感谢,你不知道我对这段代码有多满意! :)
猜你喜欢
  • 2020-08-10
  • 2021-12-30
  • 1970-01-01
  • 2019-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多