Как снова использовать переменную в новой функции - PullRequest
0 голосов
/ 04 октября 2018

Я использую эту функцию для вставки html в элементы (.catch), и мне нужно, чтобы она выполнялась только тогда, когда событие касания фиксируется на новом элементе, отличном от предыдущего.

Сначала я фиксирую позицию касания, затем я хочу проверить, отличается ли новый идентификатор от предыдущего идентификатора с id != lastid.Но это не работает, lastid равно undefined .Как я могу повторно использовать значение var lastid, когда событие касания фиксируется на новом элементе?

var lastid ; 
$('.catch').bind('touchmove', function (evt) {
    var touch = evt.originalEvent.touches[0];
    var element = $(document.elementFromPoint(touch.clientX, touch.clientY));
    var id = document.elementFromPoint(touch.clientX, touch.clientY).id;
    if ( element.hasClass('catch') && id != lastid){    
        //Changing the value 
        lastid = id ;
        // execute the rest of the function here 
        // ....
        // ....
        return lastid;
    }
});

Спасибо!

edit: var lastid = id;

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Переменные JavaScript имеют область действия функции.

if ( element.hasClass('catch') && id != lastid)
    {   
        //Changing the value 
        var lastid = id ;
        // execute the rest of the function here 
        // ....
        // ....
        return lastid;
    }

Это создаст новую локальную переменную lastid, и требуемая переменная не будет обновлена.Удалите 'var', чтобы присвоить значение переменной; 'lastid' объявлен вне локальной области функции.

    if ( element.hasClass('catch') && id != lastid)
    {   
        //Changing the value 
        lastid = id ;
        // execute the rest of the function here 
        // ....
        // ....
        return lastid;
    }

Чтобы справиться с неопределенным статусом lastid, инициализируйте его с некоторым допустимым значением.

0 голосов
/ 04 октября 2018

Не используйте var внутри функции.Просто используйте lastid = id, указав var, снова объявляет другую переменную с тем же именем внутри замыкания (то есть функции), затеняет lastid, объявленный вне функции, и делает егонедоступен, когда внутри функции (у вас нет возможности получить доступ к обоим значениям)

        //Changing the value 
        lastid = id ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...