当我双击时,clearTimeout(timer)似乎无法工作,代码调用function activated(currentactiveid);
但是,setTimeout("activated2('" + currentactiveid + "')", 2000);中的函数也引用了timer。最后,我认为问题是clearTimeout找不到变量timer。
HTML:
<td class='td2' id='currentid1' ondblclick='activatedd(this);' onclick='dclickornot(this);'>Some Text</td>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);
}发布于 2012-05-27 20:05:34
在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);
}
}());发布于 2012-05-27 20:03:34
您需要在您的计时器前面删除“var”。它的作用域锁定在dclickornot()函数中。
发布于 2012-05-27 20:06:41
计时器变量在函数中声明,并且超出了activatedd函数的作用域。若要解决此问题,请在全局范围内,在两个函数之外声明计时器。
https://stackoverflow.com/questions/10776828
复制相似问题