2011-03-17 22 views
5
var strExt = GetAttributeFromItemTable(itemTable, "Ext", "FileType"); 

Hice una alerta para strExt y se resuelve. si (strExt! = 'Wav') {// esto funciona }Javascript u operador no funciona

if (strExt!='wav' || strExt!='mp3') 
{ 
// this does not work. 
} 
+0

¿Cuál es el valor de strExt en todo esto? –

+0

¿Qué no está funcionando? –

+0

Esto debería funcionar bajo la suposición de que strExt realmente no es igual a 'wav' o 'mp3' –

Respuesta

10

Su lógica falla:

si la variable de strExt era igual a 'wav' sería no ser igual a 'mp3', y versa visados.

Explique los resultados deseados con mayor claridad.

creo que lo que estás tratando de decir es algo así como (ni 'wav'ni'mp3'):

if (!(strExt == 'wav' || strExt == 'mp3')) 

que es lógicamente equivalente a (no 'wav'y no'mp3'):

if (strExt != 'wav' && strExt != 'mp3')) 
+0

tratando de ocultar o no mostrar la "descarga de una copia" para todos los archivos de audio/video que se encuentran en una biblioteca de documentos de SP. –

+0

Gracias zzzBov. La primera línea de código funcionó para mí. Gracias de nuevo if (! (StrExt == 'wav' || strExt == 'mp3')) –

1

que sería de esperar el resultado de la segunda expresión para ser True independientemente del valor de la cadena strExt (cualquier extensión es o bien no es igual a "wav" o no es igual a "mp3"). ¿Qué esperas?

¿Está seguro de que no se refiere a un booleano AND en lugar de un OR ("la extensión no es ni 'wav' ni 'mp3'")?

+0

Estoy ocultando el enlace "descargar una copia" siempre que el tipo de archivo sea de audio o video. (desarrollo sharepoint). –

+0

Sí. Por favor, lea mi comentario. Quieres un Booleano AND. – chryss

+0

Genial. Gracias por tu contribución. –

0

La lógica detrás de esto no tiene sentido, ¿no le gustaría hacer:

if ((strExt !== "wav") && strExt !== "mp3") { 

} 

Y en lugar de O tiene más sentido en esta situación.

+0

Genial. Gracias por tu contribución. –

0

Si quieres entrar en el segundo if, cuando strExt no es igual a ambos 'wav' y 'mp3' es necesario utilizar un operador &&.

if (strExt!='wav' || strExt!='mp3') 

cuando strExt='wav' =>strExt!='wav' = false; strExt!='mp3' = verdadero => falso o verdadero = verdadero y entra en la instrucción if y es el caso es similar cuando strExt='mp3'.

+0

Genial. Gracias por tu contribución. –

1

|| dice: si alguna condición es verdadera, regresaré verdadera, sin mirar a las que están detrás de ella.

Así que true || false es verdadero, falls || true es verdadero.

En su caso, diga "si strExt no es igual a wav y no es igual a mp3, ejecute". En el caso de que uno de ellos sea verdadero, se ejecuta.

Estoy pensando que usted está buscando el & & símbolo. El logical and dice "Devolveré verdadero solo si todas las condiciones son verdaderas": cuando golpea un falso, devuelve falso.

lo que creo que el código debe ser similar:

if (strExt!='wav' && strExt!='mp3') 
+0

Genial. Gracias Zirak por su aporte. –