无法清除Speed Reader应用程序上的Timout

丹尼尔·墨菲

我一直在研究一个小型的速度读取器应用程序,只是出于娱乐目的:)受Spritz启发。

任何人都可以找出如何使用speedr_stop()阻止其运行;功能?

这是html:

<div class="speedr-wrapper">
<input class="speedr-button" type="button"value="click me" onclick="speedr_init(200)" />
<div class="speedr"></div>
</div>
<div class="readable">
<p>This paragraph should be read in the speedr div.</p>

...和javascript(使用jquery)

function speedr_init(speed) {

    //toggle the button - currently can't get it to stop :(
    $('.speedr-button').attr('onclick', "speedr_stop()");
    $('.speedr-button').attr('value', "stop me");

    var arr = $('.readable').text().trim().split(/[ ]+/);
    var writeLoop = function(i) {

        if (arr[i]) {

            setTimeout(function() {
                $('.speedr').append("<h4>" + arr[i] + "</h4>"); 
                writeLoop(i + 1);                  
            }, speed);

            setTimeout(function() {
                $('h4').remove();
            }, speed-1);//speed for the timout to clear must be 1 less than the original speed
        }
    };
    writeLoop(0);
}

function speedr_stop() {
    clearTimeout(writeLoop); //this does not work - suggestions???
    $('.speedr-button').attr('onclick', "speedr_init("+speed+")");
    $('.speedr-button').attr('value', "start me");
}

这是codepen链接:http ://codepen.io/dsm/pen/hHirb

谢谢!

阿拉文德

您必须捕获返回值setTimeout以清除计时器,即计时器ID。这是一个数字。因此,下面是修改后的代码,其中捕获了计时器ID和应用程序的运行状态,

var timeouts = [];
var isRunning = false;
function speedr_init(speed) {
  if(isRunning){
    speedr_stop();
    return;
  }
  isRunning = true;
    //toggle the button - currently can't get it to stop :(
    $('.speedr-button').attr('value', "stop me");

    var arr = $('.readable').text().trim().split(/[ ]+/);
    var writeLoop = function(i) {

        if (arr[i]) {

            timeouts.push(setTimeout(function() {
                $('.speedr').append("<h4>" + arr[i] + "</h4>"); 
                writeLoop(i + 1);                  
            }, speed));

            timeouts.push(setTimeout(function() {
                $('h4').remove();
            }, speed-1));//speed for the timout to clear must be 1 less than the original speed
        }
    };
    writeLoop(0);
}

function speedr_stop() {
    timeouts.splice(0,timeouts.length).forEach(clearTimeout);
    isRunning = false;
    $('.speedr-button').attr('value', "start me");
}

还有一个疑问,它speed来自哪里,价值是什么?在您之前的代码中,它将是未定义的,并且还会引发脚本错误。

希望这可以帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法在流星应用程序上使用setTimeout()函数

来自分类Dev

无法在OpenShift应用程序上添加phpMyAdmin墨盒

来自分类Dev

无法在电子应用程序上加载Goldenlayout库

来自分类Dev

无法在流星应用程序上使用setTimeout()函数

来自分类Dev

JavaScript无法在应用程序上运行

来自分类Dev

无法在应用程序上单击按钮

来自分类Dev

无法在Heroku Web应用程序上安装hashlib

来自分类Dev

无法在加载的应用程序上激活 UWP InkToolbar

来自分类Dev

防止在清除的应用程序上删除数据库或共享首选项

来自分类Dev

Windows应用程序工具包无法删除特定程序上的UAC提示

来自分类Dev

Android上的Google Maps无法在应用程序上运行,但演示很好

来自分类Dev

在 Openshift 上发布网站后,无法在 Android 应用程序上获取 FCM 负载消息

来自分类Dev

无法在helloweb演示应用程序上运行k run

来自分类Dev

无法在默认的MVC4应用程序上注册新用户

来自分类Dev

无法在安装于4.1以下版本的我的应用程序上收到android GCM消息

来自分类Dev

由于缺少定义,因此无法在.net Core应用程序上构建

来自分类Dev

IIS应用程序上的ProtectedData.Unprotect-IISRESET后无法工作

来自分类Dev

android应用程序上的facebook之类的按钮无法正常工作

来自分类Dev

无法在Blazor WASM Standalone应用程序上使用Google授权登录或获取访问令牌

来自分类Dev

跨编译平台应用程序上的Googlerashpad。无法在Ubuntu中读取dmp文件

来自分类Dev

为什么在应用程序上发出的任何信号都无法正常退出?

来自分类Dev

无法在helloweb演示应用程序上运行k run

来自分类Dev

无法在控制台应用程序上使用QueueClient.OnMessage进行调试

来自分类Dev

无法在Spring Boot应用程序上启用基本身份验证

来自分类Dev

无法在无cookie的Web应用程序上创建asp.net会话

来自分类Dev

使用popViewControllerAnimated后,iOS应用程序上的“后退”按钮无法正常工作

来自分类Dev

无法在节点应用程序上获取/文件名错误

来自分类Dev

无法在默认的MVC4应用程序上注册新用户

来自分类Dev

在多线程应用程序上创建后,某些线程无法执行

Related 相关文章

  1. 1

    无法在流星应用程序上使用setTimeout()函数

  2. 2

    无法在OpenShift应用程序上添加phpMyAdmin墨盒

  3. 3

    无法在电子应用程序上加载Goldenlayout库

  4. 4

    无法在流星应用程序上使用setTimeout()函数

  5. 5

    JavaScript无法在应用程序上运行

  6. 6

    无法在应用程序上单击按钮

  7. 7

    无法在Heroku Web应用程序上安装hashlib

  8. 8

    无法在加载的应用程序上激活 UWP InkToolbar

  9. 9

    防止在清除的应用程序上删除数据库或共享首选项

  10. 10

    Windows应用程序工具包无法删除特定程序上的UAC提示

  11. 11

    Android上的Google Maps无法在应用程序上运行,但演示很好

  12. 12

    在 Openshift 上发布网站后,无法在 Android 应用程序上获取 FCM 负载消息

  13. 13

    无法在helloweb演示应用程序上运行k run

  14. 14

    无法在默认的MVC4应用程序上注册新用户

  15. 15

    无法在安装于4.1以下版本的我的应用程序上收到android GCM消息

  16. 16

    由于缺少定义,因此无法在.net Core应用程序上构建

  17. 17

    IIS应用程序上的ProtectedData.Unprotect-IISRESET后无法工作

  18. 18

    android应用程序上的facebook之类的按钮无法正常工作

  19. 19

    无法在Blazor WASM Standalone应用程序上使用Google授权登录或获取访问令牌

  20. 20

    跨编译平台应用程序上的Googlerashpad。无法在Ubuntu中读取dmp文件

  21. 21

    为什么在应用程序上发出的任何信号都无法正常退出?

  22. 22

    无法在helloweb演示应用程序上运行k run

  23. 23

    无法在控制台应用程序上使用QueueClient.OnMessage进行调试

  24. 24

    无法在Spring Boot应用程序上启用基本身份验证

  25. 25

    无法在无cookie的Web应用程序上创建asp.net会话

  26. 26

    使用popViewControllerAnimated后,iOS应用程序上的“后退”按钮无法正常工作

  27. 27

    无法在节点应用程序上获取/文件名错误

  28. 28

    无法在默认的MVC4应用程序上注册新用户

  29. 29

    在多线程应用程序上创建后,某些线程无法执行

热门标签

归档