JavaScript总是返回true,即使它不是

时间:2012-02-02 05:42:42

标签: javascript jquery conditional

这可能是有史以来最奇怪的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');
    }
});

即使我在条件和价格小于MyCredits之前添加console.log(price + ' ' + MyCredits);,也会返回true。

它可能是什么......

3 个答案:

答案 0 :(得分:2)

尝试parseInt()。这应该解决它,以确保它们被JS正确解释。

答案 1 :(得分:0)

JavaScript中有类型。这可能会让人感到困惑,因为它是一种动态语言。请尝试以下操作以确保两个值均为numbers

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

以下是一些更多信息:http://en.wikibooks.org/wiki/JavaScript/Variables_and_Types

答案 2 :(得分:-1)

  

价格小于MyCredits

那么price <= MyCredits就是这样。所以没有错。