2011-10-04 5 views
9

Ho un file XML che contieneJavascript TRUE non è definito o in citazioni

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

Il codice seguente funziona solo se mi avvolgere TRUE all'interno citazioni ad esempio (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

booleano vero è diverso da stringa ' "TRUE"', funziona come previsto –

risposta

24

Senza virgolette javascript proverà a interpretare TRUE come valore/espressione. Non esiste alcun valore TRUE definito nativamente in javascript. C'è true ma javascript è case sensitive quindi non vincolerà TRUE a true.

Il valore che si ottiene da text() è una primitiva string. Scrivendo "TRUE" dà indietro il string"TRUE" che non confrontare con successo con il valore service

1

relativo perché la trippa uguale anche verificare il tipo e VERO è un identificatore "VERO" è un valore

// 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

questo è previsto.

tis.find("service").text(); restituisce una stringa, non un valore booleano e il valore JavaScript booleano per la verità è true (che distingue tra maiuscole e minuscole, come qualsiasi altra cosa nella lingua).

4

JavaScript booleano true e false sono in minuscolo.

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

Restituisce una stringa "VERO". Poiché === verifica anche il tipo, restituisce sempre false.

1

TRUE fa riferimento a una variabile denominata TRUE che non esiste, quindi si verifica un errore. "TRUE" è una stringa contenente i caratteri TRUE. La tua variabile service conterrà una stringa, quindi il secondo di questi è quello che desideri.

2

Set di servizio pari a questo, in modo da JavaScript sarà in grado di interpretare i vostri valori:

var service = tis.find("service").text().toLowerCase(); 
Problemi correlati