2011-10-04 16 views
9

Tengo un archivo XML que contieneJavascript cierto no está definido o entre comillas

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

El siguiente código sólo funciona si envuelvo VERDADERO entre comillas, por ejemplo, (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 verdadero es diferente de la cadena ' "TRUE" ', que funciona como fue diseñado –

Respuesta

24

Sin las citas javascript intentará interpretar TRUE como un valor/expresión. No hay ningún valor TRUE definido nativamente en javascript. Hay true pero JavaScript distingue entre mayúsculas y minúsculas, por lo que no vinculará TRUE a true.

El valor que obtiene de text() es una primitiva string. Escribiendo "TRUE" le da una copia de la string"TRUE" el cual se compara con éxito con el valor service

1

su porque los callos igual también verifique el tipo y VERDADERO es un identificador "VERDADERO" es un valor

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

Con ello se espera.

tis.find("service").text(); devuelve una cadena, no un booleano, y el booleano de JavaScript para la verdad es true (que distingue entre mayúsculas y minúsculas, como todo lo demás en el lenguaje).

4

JavaScript boolean true y false son minúsculas.

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

Esto devuelve una cadena "VERDADERO". Como === también comprueba el tipo, siempre devuelve falso.

1

TRUE se refiere a una variable llamada TRUE que no existe, por lo que se obtiene un error. "TRUE" es una cadena que contiene los caracteres TRUE. Su variable service contendrá una cadena, por lo que la segunda es la que desea.

2

de conjunto de servicios igual a este, por lo que JavaScript será capaz de interpretar sus valores:

var service = tis.find("service").text().toLowerCase(); 
Cuestiones relacionadas