【发布时间】:2012-04-23 14:05:56
【问题描述】:
我需要根据某些单选组的值禁用/启用按钮。这些收音机由一些 groovy 代码填充,因为我正在使用 grails,这是一个 groovy 框架,它是 java 的超集。嗯,这个解释是说无线电的值被定义为布尔值,这是很自然的,因为它们对应于是/否的答案。
现在,要禁用/启用此按钮,我使用了一些 javascript,但它使用布尔值变得很糟糕。正如标题所述,在某些时候,我在一个包含 false 的变量和另一个包含 true 的变量之间进行了逻辑运算
这是有问题的代码:
var actual = true;
$('.requerido input:radio:checked').each(function() {
console.log("actual: " + actual);
console.log("value: " + this.value);
console.log("actual and value: " + (actual && this.value));
actual = actual && this.value;
console.log("actual: " + actual);
});
如您所见,我使用 console.log 进行调试,这就是在某些时候抛出的问题:
actual: true
value: true
actual and value: true
actual: true
actual: true
value: false
actual and value: false
actual: false
actual: false
value: true
actual and value: true
actual: true
所以 true && false == false,但是 false && true == true ?请注意,这些值没有引号,因此它们是布尔值(我正在使用 Chrome 控制台进行调试,它表示双引号内的字符串,因此您可以区分 true 和“true”)。
有什么想法吗?
此外,像var x = true && false 这样的手动比较总是按预期工作,只是用变量表明问题存在。
【问题讨论】:
-
既然这显然很奇怪,我认为把这个例子简化为一个最小的测试用例会对你有用。
-
twitter.com/#!/mattmight/statuses/191964430312030208 在 PHP 和 JavaScript 中,“==”读作“可能等于”。
标签: javascript