当我双击时,似乎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);
}
答案 0 :(得分:4)
在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);
}
}());
答案 1 :(得分:1)
您需要从计时器前删除'var'。它的范围被锁定到dclickornot()函数。
答案 2 :(得分:0)
您的计时器变量在函数内声明,并且在激活的函数中超出范围。要解决它,请在全局范围内声明计时器,在两个函数之外。
答案 3 :(得分:0)
在javascript中,函数内部使用的“var”关键字创建一个局部变量,该变量只能在此函数内部或在此函数下创建的作用域链中看到。
在你的情况下,“clearTimeout(计时器);”正在使用一个始终未定义的计时器变量。