2016-05-26 5 views
0

Мне нужно сохранить 2 переменных. Они представляют собой порядок их вдавленным. Например, «tab2» со значением 2, и после этого «tab1» со значением 1 и т.д.Сохранение 2 чисел в последовательности

Я пытался хранить их

window.ACTIVE_NUMBER; 
    window.LAST_NUMBER; 

и некоторые глобальные но он всегда говорит мне, что LAST_NUMBER не определено.

Возможно ли более простой способ, например, с таблицами?

Мне нужны данные от щелчков, чтобы потом анимировать некоторые вещи. Если первое число больше второго, оно будет отличаться от размера, если оно меньше.

скрипку: https://jsfiddle.net/gfsmhy37/

ответ

1

Вы пропускаете '#' на ваш призыв JQuery:

window.outputBefore = function(x) { 
    $("#output-before").text(x); // You were missing the # here 
}; 

Кроме того, некоторые другие вещи: Изменить

window.ACTIVE_NUMBER; 
    window.LAST_NUMBER; 

To:

var ACTIVE_NUMBER; 
var LAST_NUMBER; 

Кроме того, вам необходимо изменить LAST_NUMBER перед обновлением ACTIVE_NUMBER, таким образом, он запоминает, что ACTIVE_NUMBER было до его текущего значения.

window.checker = function() { 
    LAST_NUMBER = ACTIVE_NUMBER; // Added this line 
    var foundnumber = parseInt($(".tool.active").index() + 1); 
    ACTIVE_NUMBER = foundnumber; 
    }; 

И тогда в вашей функции мыши, необходимо для вывода LAST_NUMBER:

$(".tool").click(function() { 

    if ($(this).hasClass("active")) { 
     console.log("It is already active."); 
    } else { 
     $(".tool").removeClass("active"); 
     $(this).addClass("active"); 
     checker(); 
     outputBefore(ACTIVE_NUMBER); // Add this line 
     output(LAST_NUMBER); 
    } 
    }); 

И поставил точку с запятой после всех ваших функций.

Полный код:

$(document).ready(function() { 

    // global variables 
    var ACTIVE_NUMBER; 
    var LAST_NUMBER; 

    // global functions 
    window.output = function(x) { 
    $("#output").text(x); 
    }; 

    window.outputBefore = function(x) { 
    $("#output-before").text(x); 
    }; 

    window.checker = function() { 
    LAST_NUMBER = ACTIVE_NUMBER; 
    var foundnumber = parseInt($(".tool.active").index() + 1); 
    ACTIVE_NUMBER = foundnumber; 
    }; 

    // the starting value 
    // if(LAST_NUMBER == undefined){ 
    //  LAST_NUMBER = 1; 
    // } 

    checker(); 
output(ACTIVE_NUMBER); 
outputBefore(LAST_NUMBER); 





    // Changes applied onclick event 
    $(".tool").click(function() { 

    if ($(this).hasClass("active")) { 
     console.log("It is already active."); 
    } else { 
     $(".tool").removeClass("active"); 
     $(this).addClass("active"); 
     checker(); 
     outputBefore(ACTIVE_NUMBER); 
     output(LAST_NUMBER); 
    } 
    }); 


}); 
+1

Отличное объяснение. Большое спасибо! – Dawid

1

LAST_NUMBER всегда неопределенный, потому что вы никогда не определите его :)

Вы должны были бы вызвать window.outputBefore в функции мыши, делая что-то вроде вара foundnumber = ParseInt ($ (". tool.active"). index() + 1); перед изменением значений.

Вам также не хватает # на вашем $ ("output-before"). Text (x); Должно быть => ($ («# выход-до») текст (х).)

1

Вы не назначили переменную LAST_NUMBER и JQuery селектор ошибку ... Я надеюсь, что это то, что вы ищете https://jsfiddle.net/gfsmhy37/3/

window.outputBefore = function(x) { 
$("#output-before").text(x); 
} 

window.checker = function() { 
var foundnumber = parseInt($(".tool.active").index() + 1); 
LAST_NUMBER = ACTIVE_NUMBER; 
ACTIVE_NUMBER = foundnumber; 
}