2011-10-04 18 views
9

Tôi có một tập tin XML chứaJavascript TRUE không được xác định hoặc trong dấu ngoặc kép

<car> 
    <id>123</id> 
    <sunroof>FALSE</sunroof> 
    <service>TRUE</service> 
</car> 

Đoạn mã dưới đây chỉ hoạt động nếu tôi quấn TRUE bên trong dấu ngoặc ví dụ (service == "TRUE")

var service = tis.find("service").text(); 

if(service === TRUE){ 
    var service_tag = '<a title="Service" href="">Service</a>' 
} else { 
    var service_tag = ''; 
} 
+3

Boolean đúng là khác nhau từ chuỗi ' "TRUE"', hoạt động như thiết kế –

Trả lời

24

Nếu không có dấu ngoặc kép, javascript sẽ cố gắng diễn giải TRUE dưới dạng giá trị/biểu thức. Không có giá trị TRUE được xác định nguyên bản trong javascript. Có true nhưng javascript phân biệt chữ hoa chữ thường nên nó sẽ không ràng buộc TRUE đến true.

Giá trị bạn nhận được từ text()string nguyên thủy. Viết "TRUE" cung cấp cho bạn lại số string"TRUE" so sánh thành công với giá trị service

1

của nó bởi vì dạ dày bò bằng cũng kiểm tra loại và TRUE đó là số nhận dạng "TRUE" là một giá trị

// this will work 
if(service === "TRUE"){ 
    var service_tag = '<a title="Service" href="">Service</a>' 
} else { 
    var service_tag = ''; 
} 

Difference between == and === in JavaScript

1

Điều này được mong đợi.

tis.find("service").text(); trả về một chuỗi, không phải là boolean và boolean JavaScript cho sự thật là true (phân biệt chữ hoa chữ thường, giống như mọi thứ khác trong ngôn ngữ).

4

JavaScript boolean truefalse là chữ thường.

1
var service = tis.find("service").text(); 

Điều này trả về một chuỗi "TRUE". Vì === kiểm tra loại này, nó luôn trả về false.

1

TRUE đề cập đến biến có tên TRUE không tồn tại, do đó bạn gặp lỗi. "TRUE" là một chuỗi chứa các ký tự TRUE. Biến số service của bạn sẽ chứa một chuỗi, do đó, thứ hai trong số này là những gì bạn muốn.

2

Set dịch vụ bằng này, vì vậy JavaScript sẽ có thể giải thích giá trị của bạn:

var service = tis.find("service").text().toLowerCase(); 
Các vấn đề liên quan