2012-02-02 5 views
0

Это, вероятно, самый странный JavaScript вопрос когда-либо:JavaScript всегда возвращает истину, даже если это не

$('div.GiftContainer').live('click', function() { 
    var self = $(this); 
    var price = $(this).attr('data-price'); 
    if (!self.hasClass('selected')) { 
     if (price <= MyCredits) { // always returns true 
      alert('OK'); 
      self.addClass('selected').siblings().removeClass('selected'); 
     } else { 
      alert('MOO!'); 
     } 
    } else { 
     self.removeClass('selected'); 
    } 
}); 

Возвращает верно, даже когда я добавил console.log(price + ' ' + MyCredits); прямо перед тем, состояние и цена была меньше, чем MyCredits.

Что это может быть ...

+1

Вы пробовали ParseInt, или одна из функций из этого семейства? Возможно, он разбирает его как строку или что-то в этом роде. – Tim

+0

yup, это исправлено :) ответьте на мой вопрос, чтобы я мог отметить его как принятый ответ. Благодаря! – user1027620

+0

Является ли 'MyCredits' строкой или числом? –

ответ

2

Попробуйте parseInt(). Это должно исправить это, чтобы убедиться, что они правильно интерпретируются JS.

-1

цена была меньше, чем MyCredits

Ну в таком случае price <= MyCredits верно. Так что нет ничего плохого.

0

В JavaScript есть типы. Это может запутать, потому что это динамический язык. Попробуйте следующее, чтобы обеспечить оба значения numbers:

if (parseInt(price, 10) <= parseInt(MyCredits, 10))

Вот еще информация: http://en.wikibooks.org/wiki/JavaScript/Variables_and_Types

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