我正在尝试做一些事情,但我正在努力解决一个愚蠢的错误,希望你能帮助我。
正如你在我的代码中看到的,我在服务器上有一些复选框,我附加了一个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>
答案 0 :(得分:6)
originalValue
始终是一个字符串。 value
是一个布尔值。所以,它们永远不会相等,但是当你打印它们时它们看起来是相同的(因为它们在那时都被转换为相同的字符串值)。
您可以通过多种方式解决此问题。一种简单的方法是首先将两者都转换为字符串:
if (String(value) != String(originalValue))