首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >clearTimeout()不工作

clearTimeout()不工作
EN

Stack Overflow用户
提问于 2012-05-27 20:01:20
回答 4查看 1.7K关注 0票数 0

当我双击时,clearTimeout(timer)似乎无法工作,代码调用function activated(currentactiveid);

但是,setTimeout("activated2('" + currentactiveid + "')", 2000);中的函数也引用了timer。最后,我认为问题是clearTimeout找不到变量timer

HTML:

代码语言:javascript
复制
<td class='td2'  id='currentid1' ondblclick='activatedd(this);' onclick='dclickornot(this);'>Some Text</td>

Javascript:

代码语言:javascript
复制
// Single Click 
function dclickornot(e)
{
    var currentactiveid = e.id;
    var timer = setTimeout("activated2('" + currentactiveid + "')", 2000);
}

// Double Click
function activatedd(e)
{
    clearTimeout(timer);
    var currentactiveid = e.id;
    activated(currentactiveid);
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-05-27 20:05:34

在JavaScript中,变量是在函数的作用域中定义的。因此,您必须使用全局变量代替。不过,这仍然不能阻止多次单击。

代码语言:javascript
复制
(function () {
    'use strict';

    var timer, currentactiveid;

    // Single Click 
    function dclickornot(e) {
        currentactiveid = e.id;
        timer = window.setTimeout(function () {activated2(currentactiveid); }, 2000);
    }

    // Double Click
    function activatedd(e) {
        window.clearTimeout(timer);
        timer = undefined;
        currentactiveid = e.id;
        activated(currentactiveid);
    }
}());
票数 4
EN

Stack Overflow用户

发布于 2012-05-27 20:03:34

您需要在您的计时器前面删除“var”。它的作用域锁定在dclickornot()函数中。

票数 1
EN

Stack Overflow用户

发布于 2012-05-27 20:06:41

计时器变量在函数中声明,并且超出了activatedd函数的作用域。若要解决此问题,请在全局范围内,在两个函数之外声明计时器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10776828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档