2013-04-11 2 views
-1

У меня есть этот JS-код:JavaScript: переменная является ложной, но если утверждение верно?

var show = elm.hasClassName('level0') ? false : true; 
if(show) { 
    doSomething() 
} 

Я использую FireBug, чтобы проверить значение шоу, и это четко сказано ложные. Во время отладки я заметил, что функция doSomething вызывается в любом случае. Что мне не хватает?

Использование if (false) не запускает функцию doSomething.

Спасибо!

+1

Попробуйте 'уага шоу! = Elm.hasClassName («level0»)', это делает никакой разницы? –

+0

@ Kolink1: Тот же результат, он работает doSomething() ... – user1856596

+1

нет необходимости в тройном операторе, просто используйте hasClassName напрямую – NimChimpsky

ответ

0

Попробуйте

if(!elm.hasClassName('level0')) { 
    doSomething() 
} 
2

от того, что код, который вы показали (!!!), я считаю, что ваша отладка неправильно. Может быть, вы видите значение

elm.hasClassName('level0') в false

Но var show = elm.hasClassName('level0') ? false : true; означает show будет установлен на обратной elm.hasClassName('level0')

Просто добавьте alert(show) выше, если условия и посмотреть, что напечатано , См. Эту скрипку http://jsfiddle.net/g4Zqp/1/ Работает отлично.

Если это не так, то вам нужно поставить ваш полный код

+1

+1, это определенно так. Или его 'doSomething()' вызывается из другого места в коде :-) – Bergi