【问题标题】:JavaScript always returning true even when it's notJavaScript 总是返回 true,即使它不是
【发布时间】:2012-02-02 13:56:57
【问题描述】:

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

会是什么……

【问题讨论】:

  • 您是否尝试过 parseInt 或该家族的函数之一?也许它将它解析为一个字符串,或者类似的东西。
  • 是的,已修复 :) 请回答我的问题,以便我可以将其标记为已接受的答案。谢谢!
  • MyCredits 是字符串还是数字?

标签: javascript jquery conditional


【解决方案1】:

试试 parseInt()。这应该修复它以确保它们被 JS 正确解释。

【讨论】:

    【解决方案2】:

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

    if (parseInt(price, 10) &lt;= parseInt(MyCredits, 10))

    这里有更多信息:http://en.wikibooks.org/wiki/JavaScript/Variables_and_Types

    【讨论】:

      【解决方案3】:

      价格低于 MyCredits

      那么在这种情况下price &lt;= MyCredits 是真的。所以没有错。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-06-28
        • 2013-12-28
        • 1970-01-01
        • 2021-09-11
        • 1970-01-01
        • 2018-09-24
        • 2013-08-06
        • 2017-05-10
        相关资源
        最近更新 更多