Foros del Web » Programando para Internet » Javascript »

Comparacion de string

Estas en el tema de Comparacion de string en el foro de Javascript en Foros del Web. Estoy intentando comparar un getElementById().value con un select.options[].text Si obtengo los valores de ambos observo que son iguales pero al hacer la comparación me devuelve ...
  #1 (permalink)  
Antiguo 06/09/2004, 05:11
 
Fecha de Ingreso: abril-2004
Ubicación: Sevilla
Mensajes: 100
Antigüedad: 20 años
Puntos: 0
Comparacion de string

Estoy intentando comparar un getElementById().value con un select.options[].text

Si obtengo los valores de ambos observo que son iguales pero al hacer la comparación me devuelve falso, he comprobado que si lo comparao con una cadena escrita a pelo (sin haberla obtenido antes,:p) con el valor de uno de ellos no hay problema y lo hace bien...

La verdad es que estoy un poco desorientado, no soy ningun experto en javascript, pero ya he hecho mis cositas y bastante mas complicadas que una simple comparación, echadme una mano os lo ruegooooooo

Muchas gracias de antemano....
  #2 (permalink)  
Antiguo 06/09/2004, 05:30
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Qué tal

Es probable que haya algún espacio o algo que haga que devuelva false la comparación.

Si no das más info... o un ejemplo
  #3 (permalink)  
Antiguo 06/09/2004, 05:35
 
Fecha de Ingreso: abril-2004
Ubicación: Sevilla
Mensajes: 100
Antigüedad: 20 años
Puntos: 0
Ya he comprobado los posibles espacios de ambos valores y nada...tb comprobe la longitud de ambas cadenas y es la misma para ambas...de todas formas os voy a poner el trozo de codigo que me esta dando tanto problema:


fich=document.getElementById(fichero).value;
long_select = window.opener.document.EDITOR.s_documentos_descrip .length;

while(i<long_select)
{
select=window.opener.document.EDITOR.s_documentos_ descrip.options[i].text;
if (fich == select)
{ window.opener.document.EDITOR.s_documentos_descrip .options[i].selected=true;
}
i=i+1;
}

quiero comentar que si pongo el if con distinto si me modifica el select de la otra ventana, por si acaso alguno piensa que puede se eso lo que esta fallando.

Gracias otra vez
  #4 (permalink)  
Antiguo 06/09/2004, 05:49
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola a todos:

Un par de posibilidades:
El uso de una variable con el nombre select... podría ser palabra reservada ya que hay un tag del mismo nombre...
El uso de un value fuera de un formulario... si el elemento es parte de un formulario, ¿porqué no usas el formulario para referenciarlo...
document.forms[el_formulario][fichero].value...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 06/09/2004, 06:01
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Vamos a dejarlo en una opción porque select no es una palabra reservada...

Haz un alert que muestre el valor de las dos variables para ver si son iguales... o para ver si las toma bien.

Un saludo!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #6 (permalink)  
Antiguo 06/09/2004, 06:01
 
Fecha de Ingreso: abril-2004
Ubicación: Sevilla
Mensajes: 100
Antigüedad: 20 años
Puntos: 0
Gracias por responder caricatos:

A tu primera observación te puedo asegurar que eso no es, ya que he utilizado en otros trozos de codigo una variable con ese nombre y no he tenido ningun tipo de problema, respecto al segundo punto que comentas...hasta ahora no habia tenido problema usándolo asi, de echo, para ese mismo código si en vez de hacer una comparación de igualdad la hago de desigualdad...me modifica sin ningun tipo de problema el select...

Gracias por plantear esas opciones pero, desde mi punto de vista, no creo que eso sea lo que le esté pasando
  #7 (permalink)  
Antiguo 06/09/2004, 06:04
 
Fecha de Ingreso: abril-2004
Ubicación: Sevilla
Mensajes: 100
Antigüedad: 20 años
Puntos: 0
Cita:
Iniciado por KarlanKas
Vamos a dejarlo en una opción porque select no es una palabra reservada...

Haz un alert que muestre el valor de las dos variables para ver si son iguales... o para ver si las toma bien.

Un saludo!
hola karlankas, ya he hecho lo select y tienen el mismo valor, tb he comprobado que la longitud del contenido de ambas variables es el mismo.

Gracias a todos otra vez, a ver si se os ocurre algo pq ahora mismo estoy desesperado.
  #8 (permalink)  
Antiguo 06/09/2004, 06:13
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola otra vez:

Y si le pones la coletilla toString() para asegurarte de que se comparan 2 elementos de texto...

if (fich.toString() == select.toString())...

Por probar...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #9 (permalink)  
Antiguo 06/09/2004, 06:22
 
Fecha de Ingreso: abril-2004
Ubicación: Sevilla
Mensajes: 100
Antigüedad: 20 años
Puntos: 0
hola

He probado toString()...y nada, no me entra en el if, ya me estoy empezando a mosquear.

Saludos
  #10 (permalink)  
Antiguo 06/09/2004, 06:26
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
El campo fichero qué es? es un input file? Tal vez por eso no funciona.
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #11 (permalink)  
Antiguo 06/09/2004, 06:29
 
Fecha de Ingreso: abril-2004
Ubicación: Sevilla
Mensajes: 100
Antigüedad: 20 años
Puntos: 0
el campo fichero es un input text, simplemente lo he llamado asi pq es mas descriptivo para lo que estoy haciendo.
  #12 (permalink)  
Antiguo 06/09/2004, 06:30
 
Fecha de Ingreso: abril-2004
Ubicación: Sevilla
Mensajes: 100
Antigüedad: 20 años
Puntos: 0
Voy a aclararlo un poco mas... es un input text que lo tengo puesto como readonly, ya que no quiero que se modifique el valor que contiene.
  #13 (permalink)  
Antiguo 06/09/2004, 06:39
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Vaya, yo que había hecho esto para comprobarlo...
Código HTML:
<html>
<head>
	<title>Untitled</title>
</head>

<body><form>
<input type="file" name="pepe" onchange="this.form.juan.options[0] = new Option(this.value,this.value,'',1);" />

<select name="juan" readonly="readonly" />
<input type="button" onclick="if(this.form.pepe.value==this.form.juan.options[0].text){alert('funciona')}" value="comprobar" />
</form>

</body>
</html> 
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #14 (permalink)  
Antiguo 06/09/2004, 06:42
 
Fecha de Ingreso: abril-2004
Ubicación: Sevilla
Mensajes: 100
Antigüedad: 20 años
Puntos: 0
Bueno, supongo que os habeis fijado que los datos de select lo obtengo de un formulario que está en la ventana padre... pero ya os comento que puedo obtener sin ningun tipo de problemas el text del select y a partir de ahi tratarlo como un string, de echo puedo obtener el nº de caracteres...
  #15 (permalink)  
Antiguo 06/09/2004, 12:10
 
Fecha de Ingreso: abril-2004
Ubicación: Sevilla
Mensajes: 100
Antigüedad: 20 años
Puntos: 0
No me puedo creer que una simple comparacion entre string vaya a poder conmigo...pero bueno muchas gracias a todos.
  #16 (permalink)  
Antiguo 06/09/2004, 14:13
Avatar de claray  
Fecha de Ingreso: agosto-2004
Ubicación: ahora... en Caracas
Mensajes: 345
Antigüedad: 19 años, 8 meses
Puntos: 0
imagino que mayusculas y minusculas coinciden... verificaste la longitud de ambas (como para asegurar que tienen la misma cantidad de caracteres)?

saludos.
__________________
:pirata: El arte de desarrollar es dejar que los otros lo hagan
  #17 (permalink)  
Antiguo 06/09/2004, 14:26
 
Fecha de Ingreso: abril-2004
Ubicación: Sevilla
Mensajes: 100
Antigüedad: 20 años
Puntos: 0
en tema de mayusculas y minusculas no me he metido pq estan todas en minusculas... respecto a la longitud de ambas...claro que lo verifique (nuestro amigo "length" me lo dijo), son iguales.

si se te ocurre algo más...por favor no dudes en comentarlo...

Gracias por todo
  #18 (permalink)  
Antiguo 06/09/2004, 14:31
Avatar de claray  
Fecha de Ingreso: agosto-2004
Ubicación: ahora... en Caracas
Mensajes: 345
Antigüedad: 19 años, 8 meses
Puntos: 0
puedes poner tu codigo o mandarmelo para echarle un vistazo?
__________________
:pirata: El arte de desarrollar es dejar que los otros lo hagan
  #19 (permalink)  
Antiguo 06/09/2004, 14:36
 
Fecha de Ingreso: abril-2004
Ubicación: Sevilla
Mensajes: 100
Antigüedad: 20 años
Puntos: 0
Cita:
Iniciado por cabral
Ya he comprobado los posibles espacios de ambos valores y nada...tb comprobe la longitud de ambas cadenas y es la misma para ambas...de todas formas os voy a poner el trozo de codigo que me esta dando tanto problema:


fich=document.getElementById(fichero).value;
long_select = window.opener.document.EDITOR.s_documentos_descrip .length;

while(i<long_select)
{
select=window.opener.document.EDITOR.s_documentos_ descrip.options[i].text;
if (fich == select)
{ window.opener.document.EDITOR.s_documentos_descrip .options[i].selected=true;
}
i=i+1;
}

quiero comentar que si pongo el if con distinto si me modifica el select de la otra ventana, por si acaso alguno piensa que puede se eso lo que esta fallando.

Gracias otra vez

ya lo tienes, este trozo de codigo se ejecuta cuando se activa o desactiva un checkbox...

gracias por tu interes
  #20 (permalink)  
Antiguo 06/09/2004, 14:48
Avatar de claray  
Fecha de Ingreso: agosto-2004
Ubicación: ahora... en Caracas
Mensajes: 345
Antigüedad: 19 años, 8 meses
Puntos: 0
ok, tome el trozo de codigo y solo encontre lo siguiente:

var fich=document.getElementById("fichero").value; //comillas
var i=0; //definicion
long_select = window.opener.document.EDITOR.s_documentos_descrip .length;
alert("fich="+fich+" i="+i+" long="+long_select);
while(i<long_select){
select=window.opener.document.EDITOR.s_documentos_ descrip.options[i].text;
alert("i="+i+" select=!"+select+"! fich=!"+fich+"! iguales="+(fich==select));
if (fich == select){ window.opener.document.EDITOR.s_documentos_descrip .options[i].selected=true; }
i=i+1;
}

y funciona... al menos a mi me funciona, no da error y la comparación dice que "si" cuando corresponde.

Saludos y suerte.
__________________
:pirata: El arte de desarrollar es dejar que los otros lo hagan
  #21 (permalink)  
Antiguo 06/09/2004, 15:00
 
Fecha de Ingreso: abril-2004
Ubicación: Sevilla
Mensajes: 100
Antigüedad: 20 años
Puntos: 0
muchas gracias en cuanto lo pruebe comento los resultados.

De nuevo muchas gracias.
  #22 (permalink)  
Antiguo 06/09/2004, 15:04
 
Fecha de Ingreso: abril-2004
Ubicación: Sevilla
Mensajes: 100
Antigüedad: 20 años
Puntos: 0
kiero comentar tb que fichero es una variable que recibe la funcion que contiene ese trozo de codigo, por eso no utilizaba las comillas y no las podre usar cuando lo pruebe, pero tengo la impresion de que va a ser la maldita definicion de la variable i. Aunque es curioso que si fuerzo la desigualdad si entre en el if y me ejecuta el contenido de dicho if.

Muchas gracias otra vez
  #23 (permalink)  
Antiguo 07/09/2004, 00:18
 
Fecha de Ingreso: abril-2004
Ubicación: Sevilla
Mensajes: 100
Antigüedad: 20 años
Puntos: 0
He probado las modificaciones que indicaba claray y no han funcionado, la comparación me sigue valiendo false... se os ocurre alguna otra idea??
  #24 (permalink)  
Antiguo 07/09/2004, 08:09
Avatar de claray  
Fecha de Ingreso: agosto-2004
Ubicación: ahora... en Caracas
Mensajes: 345
Antigüedad: 19 años, 8 meses
Puntos: 0
cabral... algo malo ha de haber en tu pc ya que probe el codigo que tu publicaste y funciona correctamente. A menos que el problema provenga de otro lado distinto a este codigo que has publicado...

Suerte...
__________________
:pirata: El arte de desarrollar es dejar que los otros lo hagan
  #25 (permalink)  
Antiguo 07/09/2004, 08:40
 
Fecha de Ingreso: abril-2004
Ubicación: Sevilla
Mensajes: 100
Antigüedad: 20 años
Puntos: 0
Al final lo he conseguido solucionar he tenido ke dar un rodeo pero al final lo he conseguido.

Respecto a tu comentario anterior ese trozo de codigo era de un jsp ke recogia los valores enviados desde otra pagina...pero bueno al final he tenido que ingeniarmelas para buscar otro tipo de comparacion...y por lo menos me funciona.

Muchas gracias a todos.
  #26 (permalink)  
Antiguo 07/09/2004, 09:47
Avatar de claray  
Fecha de Ingreso: agosto-2004
Ubicación: ahora... en Caracas
Mensajes: 345
Antigüedad: 19 años, 8 meses
Puntos: 0
Me alegro mucho, como para saber la solución, podrías decirnos que hiciste y explicar un poco el tema... gracias

Saludos.
__________________
:pirata: El arte de desarrollar es dejar que los otros lo hagan
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:52.