Javascript:比较两个值总是不相等

时间:2012-02-19 21:31:21

标签: javascript if-statement

我正在尝试做一些事情,但我正在努力解决一个愚蠢的错误,希望你能帮助我。

正如你在我的代码中看到的,我在服务器上有一些复选框,我附加了一个JavaScript函数。此函数获取两个值(当前值和原始值)。 我的问题是当这个函数在if上触发时,它总是到达第一个子句并且永远不会到达else子句,它没有任何意义。

当我在代码中使用了少量警报时,会发生以下情况:

案例1:提示#1 原文:false当前:true 提醒#2 true

案例2:提示#1 原文:false当前:false 提醒#2 true

正如你所看到的,无论我在第二次警报中得到什么。

希望我设法解释我的问题。

<asp:CheckBox id="chkIsCustomQuantity" originalvalue="false" runat="server" onclick="checkChange(this.checked, this.attributes['originalvalue'].value" />

<script type="text/javascript" language="javascript">
    function checkChange(value, originalValue) {

        //i added this for debugging purpose
        alert('original: ' + originalValue + ' ' + 'current: ' + value);
        alert(value != originalValue);

        if (value != originalValue) {
             // always happens
        }
        else {
              // never happens
        }
    }

</script>

1 个答案:

答案 0 :(得分:6)

originalValue始终是一个字符串。 value是一个布尔值。所以,它们永远不会相等,但是当你打印它们时它们看起来是相同的(因为它们在那时都被转换为相同的字符串值)。

您可以通过多种方式解决此问题。一种简单的方法是首先将两者都转换为字符串:

if (String(value) != String(originalValue))