在click事件上调用多个函数

时间:2015-10-27 11:46:54

标签: javascript jquery events click mouse

我有两个在用户点击按钮时调用的函数;首先是计时器将关闭,第二个开始记录鼠标已经行进的距离。当用户单击第二个按钮时,计时器和录制停止,数据将添加到阵列。虽然在点击事件期间尝试调用两个不同的函数时似乎我的代码不起作用。另外,如何将鼠标以像素为单位的距离再次重置为零?非常感谢任何帮助,谢谢!

var c=0;
var t;
var timer_is_on=0;
var timers = new Array();
var count = 0;
var mouseclickPositionList = new Array();
var mouseDistance = new Array();
var totalTravelled = 0;
var xTravelled = 0;
var yTravelled = 0;
var prevX, prevY, count = 0
var select = false;

function printMousePos(e) {
    var cursorX = e.clientX;
    var cursorY = e.clientY;
    prevY && (yTravelled += Math.abs(e.pageY - prevY));
    prevX && (xTravelled += Math.abs(e.pageX - prevX));

    prevX = e.pageX;
    prevY = e.pageY;

    totalTravelled = yTravelled + xTravelled;
    mouseDistance.push(totalTravelled);
    prevX, prevY, totalTravelled = 0;
}

document.addEventListener("click", function() {
    printMousePos();
    doTimer();
} 

function timedCount() {
    t = setTimeout("timedCount()", 1000);
}

function doTimer() {
    if (!timer_is_on) {
        timer_is_on = 1;
        timedCount();
    }
}

function stopCount() {
    clearTimeout(t);
    timer_is_on = 0;
    timers.push(t);
}

1 个答案:

答案 0 :(得分:1)

您的函数printMousePos(e)需要输入数据来处理鼠标位置。因此,只需将侦听器注册更改为此表单:

document.addEventListener("click", function(e) {
  //optionally put here code to stop bubbling the event
  printMousePos(e);
  doTimer();
}

如果js文件或脚本块中有错误,则不会处理剩余的代码。您的函数printMousePos(e)会这样做,因为它使用输入属性' e'没有提供。只需查看浏览器控制台即可识别问题。