elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  problema con javascript
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: problema con javascript  (Leído 4,208 veces)
grimeyjavi

Desconectado Desconectado

Mensajes: 5


Ver Perfil
problema con javascript
« en: 26 Marzo 2015, 15:37 pm »

Bueno, el problema es que no se por que, la funcion no manda el mensaje a la variable resultado... os dejo el codigo en pastebin, estoy mareado, y no se si hago bien en preguntarlo aqui...

Código
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  4. <title>Ejercicio 9</title>
  5. <script type="text/javascript">
  6.  
  7. var textoIntroducido = prompt("Introduce un texto")
  8. var resultado = funcion(comprobacionTexto)
  9. alert(resultado)
  10.  
  11. function funcion(comprobacionTexto){
  12. if(textoIntroducido == textoIntroducido.toUpperCase()){
  13. resultado += "El texto escrito estaba en mayusculas"
  14. }
  15. else if(textoIntroducido == textoIntroducido.toLowerCase()){
  16. resultado += "El texto escrito estaba en minusculas"
  17. }
  18. else{
  19. resultado += "El texto escrito era una mezcla de minusculas y mayusculas0"
  20. }
  21. return resultado
  22. }
  23.  
  24. </script>
  25. </head>
  26.  
  27. <body>
  28. <p>Esta página contiene el primer script</p>
  29. <noscript>Si no tienes activado javascript, activelo para disfrutar el 100% de la página web.</noscript>
  30. </body>
  31. </html>


« Última modificación: 26 Marzo 2015, 15:42 pm por #!drvy » En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.856



Ver Perfil WWW
Re: problema con javascript
« Respuesta #1 en: 26 Marzo 2015, 15:41 pm »

Ese código esta faltal. Huele a copy&paste a 5000km de distancia.

Puesto que parece que es un ejercicio te doy una pista.
Código
  1. ReferenceError: comprobacionTexto is not defined


Usa el developer tools de tu navegador favorito para acceder a la consola de errores javascript y ver posibles problemas.

Saludos


En línea

grimeyjavi

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: problema con javascript
« Respuesta #2 en: 26 Marzo 2015, 15:51 pm »

Soy nuevo, por si no te has dado cuenta, y no es un copy&paste, solo intento hacerlo para seguir estudiando JS,incluso estuve mirando el codigo resuelto del ejercicio despues de tanto quebradero de caebza, llevare casi dos horas leyendo y tal, he cambiado algunas cosas del codigo y ya me salen, aqui lo dejo.

Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Ejercicio 9</title>
<script type="text/javascript">

var textoIntroducido = prompt("Introduce un texto")
var resultado = funcion(textoIntroducido)
alert(resultado)

function funcion(textoIntroducido){
if(textoIntroducido == textoIntroducido.toUpperCase()){
resultado = "El texto escrito estaba en mayusculas"
}
else if(textoIntroducido == textoIntroducido.toLowerCase()){
resultado = "El texto escrito estaba en minusculas"
}
else{
resultado = "El texto escrito era una mezcla de minusculas y mayusculas"
}
return resultado
}

</script>
</head>
 
<body>
<p>Esta página contiene el primer script</p>
<noscript>Si no tienes activado javascript, activelo para disfrutar el 100% de la página web.</noscript>
</body>
</html>

Otra cosa, por que me dices que esta muy mal hecho?
En línea

Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: problema con javascript
« Respuesta #3 en: 26 Marzo 2015, 15:54 pm »

Tu error está aquí:

Código
  1. var resultado = funcion(comprobacionTexto)

comprobacionTexto se supone que es una variable que se la pasas por parámetro al método funcion, pero, ¿dónde está declarada?
« Última modificación: 26 Marzo 2015, 15:59 pm por Gus Garsaky » En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
grimeyjavi

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: problema con javascript
« Respuesta #4 en: 26 Marzo 2015, 15:56 pm »

Tu error está aquí:

Código
  1. var resultado = funcion(comprobacionTexto)

comprobacionTexto se supone que es una variable que se la pasas por parámetro al método funcion, pero, ¿dónde está declarada?

Ya lo he cambiado, lo he mostrado en el comentario de arriba, le puse el nombre de la funcion al resultado de la variable.
En línea

Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: problema con javascript
« Respuesta #5 en: 26 Marzo 2015, 15:59 pm »

No vi tu mensaje anterior, por eso contesté para que veas tu error.

Citar
Otra cosa, por que me dices que esta muy mal hecho?

  • Colocar código JS implícitamente en el HTML es una mala práctica.
  • Colocar ficheros JS en el head reduce el tiempo de carga de la web.
  • Ese código se ejecutará ni bien la web empiece a ser renderizada. Si haces eso mismo para obtener valores de los controles HTML, te saldrán muchos errores referencedError: X is not defined.
  • No utilizas nombres descriptivos para tus funciones. ¿function funcion? ¿No sería mejor function evaluarTexto?

    No te preocupes, es normal cometer éste tipos de errores cuando recién se empieza. Debes preocuparte por tratar que tu código sea muy limpio y expresivo, por una parte por ser un buen hábito en todo programador no hacer code smell y por otro lado porque facilitará la compresión de otro programador para con tu código, la extensibilidad y la mantenibilidad del mismo.
« Última modificación: 26 Marzo 2015, 16:03 pm por Gus Garsaky » En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
grimeyjavi

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: problema con javascript
« Respuesta #6 en: 26 Marzo 2015, 16:02 pm »

No vi tu mensaje anterior, por eso contesté para que veas tu error.

  • Colocar código JS implícitamente en el HTML es una mala práctica.
  • Colocar ficheros JS en el head reduce el tiempo de carga de la web.
  • Ese código se ejecutará ni bien la web empiece a ser renderizada. Si haces eso mismo para obtener valores de los controles HTML, te saldrán muchos errores referencedError: X is not defined.
  • No utilizas nombres descriptivos para tus funciones. ¿function funcion? ¿No sería mejor function evaluarTexto?
Si, tienes razon en que es mejor colocarlo en un archivo .js externo, pero entiende que si hago eso en todos los ejercicios tengo que estar liado en crear carpetas y archivos en todos los ejercicios, gracias por decirmelo igualmente.
Respecto a las otras cosas que me has dicho no lo sabia, gracias de nuevo por enseñarme, y por ultimo, lo que me has dicho sobre los errores "referencedError: X is not defined." no he entendido ni papa jejeje
En línea

Pablo Videla


Desconectado Desconectado

Mensajes: 2.274



Ver Perfil WWW
Re: problema con javascript
« Respuesta #7 en: 26 Marzo 2015, 16:22 pm »

Bueno, el problema es que no se por que, la funcion no manda el mensaje a la variable resultado... os dejo el codigo en pastebin, estoy mareado, y no se si hago bien en preguntarlo aqui...

Código
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  4. <title>Ejercicio 9</title>
  5. <script type="text/javascript">
  6.  
  7. var textoIntroducido = prompt("Introduce un texto")
  8. var resultado = funcion(comprobacionTexto)
  9. alert(resultado)
  10.  
  11. function funcion(comprobacionTexto){
  12. if(textoIntroducido == textoIntroducido.toUpperCase()){
  13. resultado += "El texto escrito estaba en mayusculas"
  14. }
  15. else if(textoIntroducido == textoIntroducido.toLowerCase()){
  16. resultado += "El texto escrito estaba en minusculas"
  17. }
  18. else{
  19. resultado += "El texto escrito era una mezcla de minusculas y mayusculas0"
  20. }
  21. return resultado
  22. }
  23.  
  24. </script>
  25. </head>
  26.  
  27. <body>
  28. <p>Esta página contiene el primer script</p>
  29. <noscript>Si no tienes activado javascript, activelo para disfrutar el 100% de la página web.</noscript>
  30. </body>
  31. </html>

Esta corregido tu codigo?

Que arreglaste?

Muestra lo que arreglaste, lo que yo veo es lo siguiente : Primero que todo poner lo basico a cada fin de una declaracion de eventos, variables el famoso ";"

Segundo,

Código
  1.  
  2. var textoIntroducido = prompt("Introduce un texto")
  3. var resultado = funcion(comprobacionTexto)
  4. alert(resultado);

Quieres ver el resultado segun el texto "textoIntroducido" porque pasas por parametros el "comprobacionTexto"

debería quedar asi

Código
  1.  
  2. var textoIntroducido = prompt("Introduce un texto");
  3. var resultado = funcion(textoIntroducido);
  4. alert(resultado);

Ahora bien, dinos que otros errores te salen? Fijate siempre en los errores javascript en la consola como todos los demás te han dicho, saludos.


Recien leí todo y vi que ya lo habias resuelto  :xD :xD :xD
« Última modificación: 26 Marzo 2015, 16:25 pm por Pablo Videla » En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.856



Ver Perfil WWW
Re: problema con javascript
« Respuesta #8 en: 26 Marzo 2015, 17:07 pm »

Citar
Otra cosa, por que me dices que esta muy mal hecho?

Aparte de lo que te dijo el compañero Gus:

  • 1. Todas las variables, funciones y llamadas han de terminarse con ; (punto y coma).
  • 2. Debes utilizar un solo método de declaración de función. En la linea 8 declaras la funcion sin llaves ({ }) y en la linea 11 lo haces con. Esto puede suponer un problema de lectura y puede incluso llegar a confundir el interprete y liar el código (introduciendo la función 'funcion' dentro de 'resultado'.

    Ahora que miro, no estabas declarando una función, estabas llamándola.. ¿ ves a lo que me refiero ?

  • 3. La forma de declarar la variable resultado dentro de 'funcion' no es la mas correcta. Estas utilizando concatenación donde no hace falta.

Un ejemplo del código.
Código
  1. var textoIntroducido = prompt('Introduce un texto');
  2.  
  3. var comprobarTexto = function(texto) {
  4.  
  5.   if(texto === texto.toUpperCase()) {
  6.      return 'El texto esta escrito en mayusculas';
  7.   }
  8.  
  9.   else if(texto === texto.toLowerCase()) {
  10.      return 'El texto esta escrito en minusculas';
  11.   }
  12.  
  13.   else {
  14.      return 'El texto contiene mezcla de minusculas y mayusculas.';
  15.   }
  16.  
  17. };
  18.  
  19. alert(comprobarTexto(textoIntroducido));

Estos errores se suelen cometer mucho por hacer copy&paste. Por eso dije lo que dije.

Saludos
« Última modificación: 26 Marzo 2015, 17:24 pm por #!drvy » En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: problema con javascript
« Respuesta #9 en: 26 Marzo 2015, 17:54 pm »

Otra cosa, por que me dices que esta muy mal hecho?

Realmente para ejercicios de practica no necesitas ponerlos en archivos separados. Pero hay dos puntos en cuanto a la funcion:

1. Tu variable resultado en tu scope global la accedes directamente desde la funcion. Es preferible que la variable tenga un contexto local a la funcion.

2. No necesitas concatenar la variable resultado.

En primer lugar, al llamar la funcion la variable resultado en tu scope global no existe. Como concatenas la variable (i.e. resultado = resultado + "El texto blah blah blah") y la variable resultado tecnicamente no existe hasta que la funcion devuelva, acabas con undefined + "El Texto". Si vuelves a llamar a la funcion, nuevamente concatenas sobre la variable en el scope global que ahora contiene: "undefinedEl texto blah blah blahEl Texto blah blah blah".

Código
  1. var resultado; //Scope global
  2.  
  3. function localContext(){
  4.  resultado = 'text'; //Scope global
  5. }
  6.  
  7. localContext();
  8. alert(resultado); //'text'

Código
  1. var resultado; //Scope global
  2.  
  3. function localContext() {
  4.  var resultado = 'text'; //Scope local
  5.  return resultado;
  6. }
  7.  
  8. var operacion = localContext(); //operacion = 'text';
  9. alert(resultado); // '' (empty)

Los puntos y comas no son necesarios siempre y cuando sepas que hace (ASI) Automatic Semi-colon Insertion.. Yo en lo personal trato de evitar el uso de ASI, simplemente porque estoy acostumbrado a otros lenguajes que no utilizan semicolons (punto y coma) y no todos saben exactamente las reglas de ASI por lo que te evitas confundir a los demas. Pero yo diria que es preferencia.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con PHP y javascript
PHP
llamamecomoquieras 2 2,228 Último mensaje 30 Diciembre 2008, 16:51 pm
por llamamecomoquieras
Problema con javascript
Desarrollo Web
dimitrix 3 2,157 Último mensaje 2 Mayo 2012, 18:20 pm
por dimitrix
problema con javascript
Desarrollo Web
basickdagger 1 1,966 Último mensaje 14 Mayo 2012, 06:51 am
por engel lex
[javascript] Problema
Desarrollo Web
Ori-chan 2 2,640 Último mensaje 19 Diciembre 2012, 07:34 am
por Ori-chan
[javascript] Problema con while.
Desarrollo Web
Ori-chan 6 3,091 Último mensaje 11 Enero 2013, 03:55 am
por ericksav22
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines