2016-06-28 4 views
0

Я пытаюсь закодировать простую функцию, которая проверяет загрузку флажков с указанным классом. Я хочу использовать переменную, чтобы определить, является ли проверка всех ДИВ была нажата, но переменная всегда неопределенным:javascript function variable always undefined

var CCT; 
$("#filterTitleTopic").click(function() { 
    console.log(CCT); 
    if (CCT == undefined || CCT == null || CCT == 2) {    
     $('input.topic').prop('checked', false); 
     var CTT = 1; 
     console.log("unchecking boxes..."); 
    } 
    else if (CTT == 1) {     
     $('input.topic').prop('checked', true); 
     var CTT = 2; 
     console.log("checking boxes..."); 
    } 
}); 

console.log всегда возвращает undefined и unchecking boxes....

+1

вы держите инициализирует переменную просто сделать 'СТТ = 2, или' СТТ = 1; ' – guradio

+1

вы инициализации переменной СТТ не CCT –

ответ

0

вы используете только var, если хотите определить переменную, если вы хотите установить значение для существующей переменной, вы ее не добавляете.

просто заменить код следующим образом:

var CCT; 
$("#filterTitleTopic").click(function() { 
    console.log(CCT); 
    if (CCT == undefined || CCT == null || CCT == 2) {    
     $('input.topic').prop('checked', false); 
     CCT = 1; 
     console.log("unchecking boxes..."); 
    } 
    else if (CCT == 1) {     
     $('input.topic').prop('checked', true); 
     CCT = 2; 
     console.log("checking boxes..."); 
    } 
}); 
+0

@lexith я удалил ключевое слово«Var»внутри функции нажмите слушателя. – Bamieh

0

только присвоить переменной, не reinitalize его var.

Что происходит, если вы делаете var CTT = 2, это то, что вы инициализируете новую переменную в области функций, которая принимает предикцию над переменной, определенной в глобальной области. Потому что это разрешено, а иногда даже хотелось, чтобы у вас не было ошибок. Однако, поскольку вы инициализируете переменную в области функций, вы больше не получаете доступ к переменной, указанной в строке 1.

Также вы перепутали CCT и CTT.

Это работает (see fiddle)

var CTT; 
$("#filterTitleTopic").click(function() { 
    console.log(CTT); 
    if (CTT == undefined || CTT == null || CTT == 2) {    
     $('input.topic').prop('checked', false); 
     CTT = 1; 
     console.log("unchecking boxes..."); 
    } 
    else if (CTT == 1) {     
     $('input.topic').prop('checked', true); 
     CTT = 2; 
     console.log("checking boxes..."); 
    } 
}); 
0

Я предполагаю, что вы две проблемы:

  • Простая опечатка (CCT против CTT).
  • Если вы используете var foo внутри функции, вы получаете новую локальную функцию, и у вас больше нет прямого доступа к любой функции foo, которую вы, возможно, определили во внешней ереси. Для доступа к глобальным переменным просто использовать их, а не переопределять их.