Tôi cần tắt/bật nút tùy thuộc vào giá trị của một số nhóm radio. Những radio này được phổ biến bởi một số mã groovy bởi vì tôi đang sử dụng grails, một framework cho groovy, đó là một phần lớn của java. Vâng giải thích đó là để nói rằng các giá trị của các radio được định nghĩa là boolean, mà chỉ là tự nhiên bởi vì chúng tương ứng với câu trả lời có/không.Javascript booleans: false && true results in
Bây giờ, để tắt/bật nút này, tôi sử dụng một số javascript, nhưng nó đi chuối với các giá trị boolean. Theo các tiểu bang tiêu đề, trên một số điểm tôi làm một logic và giữa một biến chứa false
và một biến chứa true
Đây là mảnh mã có vấn đề:
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);
});
Như bạn có thể thấy tôi sử dụng các console.log để gỡ lỗi, và đây là những gì ném tại một số điểm:
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
vì vậy, đúng & & sai == sai, nhưng sai & & true == true? Lưu ý rằng các giá trị không có dấu ngoặc kép, vì vậy chúng là các giá trị boolean (tôi đang gỡ lỗi bằng cách sử dụng bảng điều khiển Chrome đại diện cho các chuỗi bên trong dấu ngoặc kép, vì vậy bạn có thể phân biệt giữa true và "true").
Bất kỳ ý tưởng nào?
Ngoài ra, thực hiện so sánh thủ công như var x = true && false
luôn hoạt động như mong đợi, rất phù hợp với các biến mà sự cố xảy ra.
Vì đây rõ ràng là rất lạ, tôi nghĩ rằng giảm ví dụ này để một trường hợp thử nghiệm tối thiểu sẽ hữu ích cho bạn. – zmccord
http://twitter.com/#!/mattmight/statuses/191964430312030208 Trong PHP và JavaScript, "==" được phát âm là "có thể bằng". –