JavaScript всегда возвращает истину, даже если это не так - PullRequest
0 голосов
/ 02 февраля 2012

Вероятно, это самая странная проблема 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');
    }
});

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

Ответы [ 3 ]

2 голосов
/ 02 февраля 2012

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

0 голосов
/ 02 февраля 2012

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

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

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

0 голосов
/ 02 февраля 2012

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

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

...