Foros del Web » Programando para Internet » Javascript »

No funciona el script (prompt, if y else)

Estas en el tema de No funciona el script (prompt, if y else) en el foro de Javascript en Foros del Web. Buenas, estoy actualmente cursando un tema de javascript básico y tengo que hacer un ejercicio que dice así: Cita: Construir un script insertado en una ...
  #1 (permalink)  
Antiguo 12/03/2014, 22:31
Avatar de raptor96  
Fecha de Ingreso: diciembre-2007
Ubicación: aranjuez
Mensajes: 102
Antigüedad: 17 años
Puntos: 1
No funciona el script (prompt, if y else)

Buenas, estoy actualmente cursando un tema de javascript básico y tengo que hacer un ejercicio que dice así:

Cita:
Construir un script insertado en una página HTML que realice la pregunta: “¿Quién descubrió América?

Se debe utilizar la función prompt() para enviar la pregunta, pidiendo la respuesta a través de su cajetín de entrada

Usar if/else para comprobar si la respuesta es “Cristobal Colón” o no

Si la respuesta es correcta se deberá insertar en la página HTML, el string: "Correcto, Cristobal Colón descubrió América"

Si contesta cualquier otra cosa se insertará el string: "Su respuesta ..respuesta introducida.. no es correcta"
En principio no se por donde cogerlo, tengo escrito este script:

Cita:
var Respuesta = prompt("¿Quién descubrió América?");

if (Respuesta = "Cristobal Colón") {
document.writeln("Correcto, " + Respuesta + " descubrió América");
}
else {
document.writeln("Su respuesta " + Respuesta + " no es correcta");
}
Se que no vale, ya que el string lo capta como true, entonces no se como hacerlo, es un curso online y no han explicado nada sobre esto, en el ejemplo que ponen ellos lo hacen con numeros que es bastante mas fácil.

Absténganse de comentarios como que se supone que lo tengo que hacer yo y demás, ya que no se como hacerlo he probado de todo lo que se me a ocurrido y nada a funcionado.

Gracias de antemano.
  #2 (permalink)  
Antiguo 13/03/2014, 02:23
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 9 meses
Puntos: 574
Respuesta: No funciona el script (prompt, if y else)

Lo siento pero no me voy a abstener....

No te pongas nervioso y repasa que solo tienes un error de un carácter. Que igual nos ha pasado a todos alguna vez.

Va inténtalo si no te sale repregunta y te lo digo.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 13/03/2014, 07:09
Avatar de raptor96  
Fecha de Ingreso: diciembre-2007
Ubicación: aranjuez
Mensajes: 102
Antigüedad: 17 años
Puntos: 1
Respuesta: No funciona el script (prompt, if y else)

En circunstancias normales te agradecería que no me dijeses el código, si no que me digas lo que has hecho tú, que tengo 1 fallo, no me gusta que me lo den hecho.

Pero al no tener apuntes, teoría o cualquier otra cosa en la que fijarme, no se si lo que estoy haciendo esta bien, si evalúa los strings como true, si hay que hacerlo transformando los strings en algún tipo de valor para comparar, si compara los strings por sus letras simplemente...

No se nada, simplemente vi un ejemplo en el que el if es si el numero introducido es menor o igual a x y listo.

La verdad es que este tema está bastante mal explicado.

Te agradecería que me dijeses que falla y por que, mas que nada me interesa el por que para enterarme de como va.

Gracias.
  #4 (permalink)  
Antiguo 13/03/2014, 07:20
 
Fecha de Ingreso: mayo-2011
Ubicación: Zaragoza
Mensajes: 58
Antigüedad: 13 años, 7 meses
Puntos: 5
Respuesta: No funciona el script (prompt, if y else)

Cita:
Absténganse de comentarios como que se supone que lo tengo que hacer yo y demás
Yo tampoco me voy a abstener, no puedes venir a un foro a pedir eso, no se si eres consciente de que lo que puedes conseguir es que nadie te responda.

Cita:
Se que no vale, ya que el string lo capta como true
Podrias explicar un poco mas esto que no te entiendo?. Igual tienes el error alli :).

Saludos.
  #5 (permalink)  
Antiguo 13/03/2014, 07:24
Avatar de raptor96  
Fecha de Ingreso: diciembre-2007
Ubicación: aranjuez
Mensajes: 102
Antigüedad: 17 años
Puntos: 1
Respuesta: No funciona el script (prompt, if y else)

Simplemente he sido sincero, el resultado es el que queria que no me dijeseis el codigo sin más ya que si no no aprendo.

Lo que me has dicho es que a la hora de comparar para ver si lo introducido es igual a lo correcto, no se si un string lo convierte en true, entonces un string = otro string es como si fuera true = true.

O compara los strings por las letras?
  #6 (permalink)  
Antiguo 13/03/2014, 08:13
 
Fecha de Ingreso: mayo-2011
Ubicación: Zaragoza
Mensajes: 58
Antigüedad: 13 años, 7 meses
Puntos: 5
Respuesta: No funciona el script (prompt, if y else)

No lo convierte lo compara a ver si es igual uno que el otro. La comparacion es la que devuelve true o false al igual que comparar 5>4 devuelve true o 5<4 devuelve false.

¿Como comparas un string con un string? buscalo y tendras la solucion estas bastante cerca :).

Saludos.
  #7 (permalink)  
Antiguo 13/03/2014, 08:55
Avatar de raptor96  
Fecha de Ingreso: diciembre-2007
Ubicación: aranjuez
Mensajes: 102
Antigüedad: 17 años
Puntos: 1
Respuesta: No funciona el script (prompt, if y else)

Vale, ya lo tengo, en principio iba a hacer con el compareTo, pero me fije y si ponía == en vez de = funcionaba.

Es decir, Respuesta == "Cristobal Colón"

Ahora la siguiente duda es, como poner varias respuestas validas, por que si lo pones sin tilde la da como erronea.

Se me ocurre hacer un else if con todas las posibilidades, pero no hay algo mas sencillo como poner varias respuestas a una variable?

Última edición por raptor96; 13/03/2014 a las 09:01
  #8 (permalink)  
Antiguo 13/03/2014, 09:23
 
Fecha de Ingreso: mayo-2011
Ubicación: Zaragoza
Mensajes: 58
Antigüedad: 13 años, 7 meses
Puntos: 5
Respuesta: No funciona el script (prompt, if y else)

Bien!!!!.

A ver, el tema es que solo "=" es una asignacion, "==" es una comparacion y "===" es digamos que otro tipo de comparacion.

Es decir que lo que hacias era asignar el string "Cristobal Colón" a la variable Respuesta y esta al no estar vacia es true.

Cita:
como poner varias respuestas validas
Aqui el problema no es que exista varias respuestas validas sino que tienes que pensar que pasa si el usuario mete mas espacios al principio o al final por ejemplo (" Cristobal Colón "), o el usuario escribe "CrIstobal COLóN"... es imposible pensar en todas las combinaciones que va a hacer un usuario.

Podrias pensar en poner todas las letras en minuscula por ejemplo (existe funciones para eso), tambien una expresion regular para validar entre "o" y "ó".

Saludos.
  #9 (permalink)  
Antiguo 13/03/2014, 09:25
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 3 meses
Puntos: 578
Respuesta: No funciona el script (prompt, if y else)

Puedes utilizar el operador de comparación || con todas las posibilidades, aunque hay otras soluciones más "avanzadas" como indica jarios.

PD: === es una comparación estricta.
  #10 (permalink)  
Antiguo 13/03/2014, 09:31
 
Fecha de Ingreso: mayo-2011
Ubicación: Zaragoza
Mensajes: 58
Antigüedad: 13 años, 7 meses
Puntos: 5
Respuesta: No funciona el script (prompt, if y else)

Sinceramente validas son: Cristobal Colón, cristobal colón, CRISTOBAL COLÓN y demas combinaciones. si permites que no lleve tilde estas promoviendo la faltas de ortografía .

Cita:
PD: === es una comparación estricta.
Eso!!!. Que no me venia a la mente :)

http://www.w3schools.com/js/js_comparisons.asp
  #11 (permalink)  
Antiguo 13/03/2014, 09:37
Avatar de raptor96  
Fecha de Ingreso: diciembre-2007
Ubicación: aranjuez
Mensajes: 102
Antigüedad: 17 años
Puntos: 1
Respuesta: No funciona el script (prompt, if y else)

¿Podrían decir diferencia entre comparación normal y comparación escricta? Ya por curiosidad.
  #12 (permalink)  
Antiguo 13/03/2014, 09:55
 
Fecha de Ingreso: mayo-2011
Ubicación: Zaragoza
Mensajes: 58
Antigüedad: 13 años, 7 meses
Puntos: 5
Respuesta: No funciona el script (prompt, if y else)

mmm....

Google

http://www.etnassoft.com/2011/01/24/...en-javascript/

Busca!!!.
  #13 (permalink)  
Antiguo 13/03/2014, 10:09
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 3 meses
Puntos: 578
Respuesta: No funciona el script (prompt, if y else)

La estricta hace lo mismo que la normal pero tiene en cuenta que sean de un mismo tipo.

Bueno, ¿Ya solucionaste tu problema?
  #14 (permalink)  
Antiguo 13/03/2014, 15:56
Avatar de raptor96  
Fecha de Ingreso: diciembre-2007
Ubicación: aranjuez
Mensajes: 102
Antigüedad: 17 años
Puntos: 1
Respuesta: No funciona el script (prompt, if y else)

Sí, el problema está resuelto, ahora se presenta el problema de que puedan poner Cristobal Colón con diferentes mayúsculas y tal a ver si soy capaz de encontrar alguna función para cambiarlo todo a minúsculas.

EDITO:

¡Conseguido! he usado .toLowerCase(); para cambiar a minúsculas, en cuanto a las tildes, generalizarlas para todas las letras era muy costoso, de modo y como si pones una tilde donde no es, no seria el nombre correcto, simplemente he puesto un else if con tilde y otro sin tilde.

Luego y después de unas horas de experimentos y búsqueda he añadido código para que si no pones nada o cancelas muestre otro mensaje.

Dejo el código para que me comentéis y por si alguien tiene dudas como las mía, las resuelva en este hilo.

Cita:
<script type="text/javascript">

var Respuesta = prompt("¿Quién descubrió América?");

if ((Respuesta == "") || (Respuesta == null)) {
document.writeln("No has introducido ninguna respuesta.");
}
else {
var Depurada = Respuesta.toLowerCase();

if (Depurada === "cristobal colon") {
document.writeln('Correcto, "' + Respuesta + '" descubrió América.');
}
else if (Depurada === "cristobal colón") {
document.writeln('Correcto, "' + Respuesta + '" descubrió América.');
}
else {
document.writeln('Su respuesta "' + Respuesta + '" no es correcta.')
}
}
</script>

Última edición por raptor96; 13/03/2014 a las 19:07 Razón: ¡Conseguido!
  #15 (permalink)  
Antiguo 14/03/2014, 03:25
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 9 meses
Puntos: 574
Respuesta: No funciona el script (prompt, if y else)

La comparación estricta en este caso es innecesaria puesto que solo puede llegar un string, luego no es necesario ver si es del mismo tipo....

=== se usa por ejemplo para diferenciar entre 0 entero y false un bolean (o 1 y true).

Tenias la opción de usar || (o)

Código Javascript:
Ver original
  1. if (Depurada == "cristobal colon" || Depurada == "cristobal colón") {...

Si te decides por el else if aprovéchalo

Código Javascript:
Ver original
  1. if (Depurada == "cristobal colon") {
  2. document.writeln('Correcto, "' + Respuesta + '" descubrió América. Pero en Castellano actual se usa la forma Colón con tilde');
  3. }
  4. else if (Depurada == "cristobal colón") {
  5. document.writeln('Correcto, "' + Respuesta + '" descubrió América.');
  6. }
  7. else {
  8. document.writeln('Su respuesta "' + Respuesta + '" no es correcta.')
  9. }

Te recomiendo que busques por la red hay muchos manuales, concretamente para este tema lee sobre los Operadores.

http://librosweb.es/javascript/capit...peradores.html


Cita:
No te pongas nervioso y repasa que solo tienes un error de un carácter. Que igual nos ha pasado a todos alguna vez.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 14/03/2014 a las 03:30
  #16 (permalink)  
Antiguo 14/03/2014, 05:32
Avatar de raptor96  
Fecha de Ingreso: diciembre-2007
Ubicación: aranjuez
Mensajes: 102
Antigüedad: 17 años
Puntos: 1
Respuesta: No funciona el script (prompt, if y else)

Vaya, fíjate que mientras hacia el if de "" y null pensé, ahora hago un || para las respuestas, y al final no lo hice.

He tomado en cuenta las sugerencias que me habéis dicho, y el código final es:

Cita:
var Respuesta = prompt("¿Quién descubrió América?");

if (Respuesta == "" || Respuesta == null) {
document.writeln("No has introducido ninguna respuesta.");
}
else {
var Depurada = Respuesta.toLowerCase();

if (Depurada == "cristobal colon" || Depurada == "cristobal colón") {
document.writeln('Correcto, "' + Respuesta + '" descubrió América.');
}
else {
document.writeln('Su respuesta "' + Respuesta + '" no es correcta.');
}
}
Cita:
No te pongas nervioso y repasa que solo tienes un error de un carácter. Que igual nos ha pasado a todos alguna vez.
Demasiada sutilidad jeje.
  #17 (permalink)  
Antiguo 14/03/2014, 06:15
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 9 meses
Puntos: 574
Respuesta: No funciona el script (prompt, if y else)

Hubiese sido mejor

No te pongas nervioso y repasa que solo tienes un error de un carácter. Igual se nos ha pasado a todos alguna vez.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #18 (permalink)  
Antiguo 14/03/2014, 06:45
Avatar de raptor96  
Fecha de Ingreso: diciembre-2007
Ubicación: aranjuez
Mensajes: 102
Antigüedad: 17 años
Puntos: 1
Respuesta: No funciona el script (prompt, if y else)

Actualizo el código, ya que había posibilidades de que no funcionara con las tildes, así está arreglado:

Cita:
var Respuesta = prompt("¿Quién descubrió América?");

if (Respuesta == "" || Respuesta == null) {
document.writeln("No has introducido ninguna respuesta.");
}
else {
var Depurada = Respuesta.toLowerCase();

if (Depurada == "cristóbal colón" || Depurada == "cristobal colon" || Depurada == "cristóbal colon" || Depurada == "cristobal colón") {
document.writeln('Correcto, "' + Respuesta + '" descubrió América.');
}
else {
document.writeln('Su respuesta "' + Respuesta + '" no es correcta.');
}
}
Y ya aprovecho para daros a todos las gracias por la ayuda, de verdad, gracias.

Etiquetas: funcion, html, prompt
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 03:09.