Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => Mensaje iniciado por: grimeyjavi en 26 Marzo 2015, 15:37 PM

Título: problema con javascript
Publicado por: grimeyjavi 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 (javascript) [Seleccionar]
<!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(comprobacionTexto)
alert(resultado)

function funcion(comprobacionTexto){
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 mayusculas0"
}
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>
Título: Re: problema con javascript
Publicado por: #!drvy 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 (console) [Seleccionar]
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
Título: Re: problema con javascript
Publicado por: grimeyjavi 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.

<!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?
Título: Re: problema con javascript
Publicado por: Usuario Invitado en 26 Marzo 2015, 15:54 PM
Tu error está aquí:

Código (javascript) [Seleccionar]
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?
Título: Re: problema con javascript
Publicado por: grimeyjavi en 26 Marzo 2015, 15:56 PM
Cita de: Gus Garsaky en 26 Marzo 2015, 15:54 PM
Tu error está aquí:

Código (javascript) [Seleccionar]
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.
Título: Re: problema con javascript
Publicado por: Usuario Invitado en 26 Marzo 2015, 15:59 PM
No vi tu mensaje anterior, por eso contesté para que veas tu error.

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

Título: Re: problema con javascript
Publicado por: grimeyjavi en 26 Marzo 2015, 16:02 PM
Cita de: Gus Garsaky en 26 Marzo 2015, 15:59 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
Título: Re: problema con javascript
Publicado por: Pablo Videla en 26 Marzo 2015, 16:22 PM
Cita de: grimeyjavi 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 (javascript) [Seleccionar]
<!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(comprobacionTexto)
alert(resultado)

function funcion(comprobacionTexto){
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 mayusculas0"
}
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>


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 (javascript) [Seleccionar]

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


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

debería quedar asi

Código (javascript) [Seleccionar]

var textoIntroducido = prompt("Introduce un texto");
var resultado = funcion(textoIntroducido);
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
Título: Re: problema con javascript
Publicado por: #!drvy en 26 Marzo 2015, 17:07 PM
CitarOtra cosa, por que me dices que esta muy mal hecho?

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


Un ejemplo del código.
Código (javascript) [Seleccionar]
var textoIntroducido = prompt('Introduce un texto');

var comprobarTexto = function(texto) {

  if(texto === texto.toUpperCase()) {
     return 'El texto esta escrito en mayusculas';
  }

  else if(texto === texto.toLowerCase()) {
     return 'El texto esta escrito en minusculas';
  }

  else {
     return 'El texto contiene mezcla de minusculas y mayusculas.';
  }

};

alert(comprobarTexto(textoIntroducido));


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

Saludos
Título: Re: problema con javascript
Publicado por: MinusFour en 26 Marzo 2015, 17:54 PM
Cita de: grimeyjavi en 26 Marzo 2015, 15:51 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 (javascript) [Seleccionar]

var resultado; //Scope global

function localContext(){
  resultado = 'text'; //Scope global
}

localContext();
alert(resultado); //'text'


Código (javascript) [Seleccionar]

var resultado; //Scope global

function localContext() {
  var resultado = 'text'; //Scope local
  return resultado;
}

var operacion = localContext(); //operacion = 'text';
alert(resultado); // '' (empty)


Los puntos y comas no son necesarios siempre y cuando sepas que hace (ASI) Automatic Semi-colon Insertion. (http://inimino.org/~inimino/blog/javascript_semicolons). 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.