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

Pop*_*oko 2 javascript if-statement

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

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

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

案例1:警报#1 原始:false当前:真实警报#2 true

案例2:警报#1 原始: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>
Run Code Online (Sandbox Code Playgroud)

Cam*_*ron 6

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

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

if (String(value) != String(originalValue))
Run Code Online (Sandbox Code Playgroud)

  • 如果要从服务器检查它们,则不需要自定义属性.只需使用`.defaultChecked`属性即可.这会给你一个布尔就像`.checked`.`onclick ="checkChange(this.checked,this.defaultChecked)"` (2认同)