2015-10-27 10 views
-2

У меня есть две функции, которые вызывается, когда пользователь нажимает кнопку; во-первых, таймер погаснет, второй начнет записывать расстояние, пройденное мышью. Когда пользователь нажимает на вторую кнопку, таймер и запись останавливаются, а данные добавляются в массивы. Хотя, казалось бы, мой код не работает при попытке вызвать две разные функции во время события click. Кроме того, как я могу сбросить расстояние, которое мышь перемещала в пикселях обратно к нулю снова? Любая помощь будет очень признательна, спасибо!Вызов нескольких функций при событии click

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

где ваш html-код ... не могли бы вы поделиться этим также –

+0

Ни одна из функций не вызывается в событиях кнопки в коде html – user1610834

+0

Это похоже на половину кода; где ваш HTML? Где определяется 'mouseDistance'? Ваш 'printMousePos', кажется, ничего не делает ...? –

ответ

1

Ваша функция printMousePos(e) требует ввода данных для обработки положения мыши. Так просто изменить регистрацию слушателя в эту форму:

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

Если у вас есть ошибки в JS-файла или блока сценария оставшийся код не будет обработан. Ваша функция printMousePos(e) делает это, потому что она работает с входным атрибутом 'e', ​​который не предоставляется. Просто проверьте консоль браузера для идентификации проблемы.

+0

Извините, но не могли бы вы рассказать, что я должен делать? – user1610834

+0

Отредактируйте блок кода, который запускает 'document.addEventListener (« click »,' to what i post. Обратите внимание на букву ** e **, которая представляет событие click. – meshosk

Смежные вопросы