Foros del Web » Programando para Internet » Javascript »

Necesito asesoría con este código

Estas en el tema de Necesito asesoría con este código en el foro de Javascript en Foros del Web. Hola! Resulta que estoy aprendiendo Javascript con un libro bastante bueno, tanto ejemplos como ejercicios son bastante comprensibles. Sin embargo me quedé atascado en uno ...
  #1 (permalink)  
Antiguo 05/07/2012, 21:51
 
Fecha de Ingreso: julio-2012
Mensajes: 10
Antigüedad: 11 años, 9 meses
Puntos: 0
Pregunta Necesito asesoría con este código

Hola!
Resulta que estoy aprendiendo Javascript con un libro bastante bueno, tanto ejemplos como ejercicios son bastante comprensibles. Sin embargo me quedé atascado en uno de ellos y por más vueltas y vueltas que le doy, no llego a la solución. Sin más preámbulos, el código:

<html>
<head>
<title>link</title>
<script type="text/javascript">
function addem(){
var n = 2;
var y = 3;
document.write( n + y ,"<br />");
}
</script>
</head>
<body bgcolor="red">

<h2>Hello</h2>

<a href="JavaScript:addem()">Click here</a>

</body>
</html>

La pregunta es: Qué es lo que está mal en ese código y cómo se puede resolver? Al ejecutarlo en el navegador y dar clic en el enlace, muestra el resultado, sin embargo parece que el programa sigue ejecutándose. Alguien me puede orientar por favor. Estoy ya en
Desde ya muchas gracias y saludos
  #2 (permalink)  
Antiguo 06/07/2012, 00:48
 
Fecha de Ingreso: diciembre-2011
Ubicación: Medellín
Mensajes: 68
Antigüedad: 12 años, 4 meses
Puntos: 7
Respuesta: Necesito asesoría con este código

document.write( n + y ,"<br />");

Esa linea "está mala".

Esa "coma", la deberías remplazar por un "+", para que te quede algo así:

document.write( n + y + "<br />");

Prueba haber si por eso te falla el código :D.
  #3 (permalink)  
Antiguo 06/07/2012, 06:44
 
Fecha de Ingreso: julio-2012
Mensajes: 10
Antigüedad: 11 años, 9 meses
Puntos: 0
Pregunta Respuesta: Necesito asesoría con este código

Hola Mechaz!
Gracias por tu respuesta. El resultado viene a ser el mismo, bien con coma o bien con el signo +. Ya había pensado en esa posibilidad pero para efectos prácticos, viene a dar lo mismo. Si alguien tiene otra sugerencia estaría muy agradecido.

Saludos

Jorge
  #4 (permalink)  
Antiguo 06/07/2012, 08:40
Avatar de Artificium  
Fecha de Ingreso: enero-2011
Mensajes: 492
Antigüedad: 13 años, 3 meses
Puntos: 81
Respuesta: Necesito asesoría con este código

A qué te refieres cuando dices que parece que el programa sigue ejecutándose?
  #5 (permalink)  
Antiguo 06/07/2012, 09:02
 
Fecha de Ingreso: julio-2012
Mensajes: 10
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Necesito asesoría con este código

Cita:
Iniciado por Artificium Ver Mensaje
A qué te refieres cuando dices que parece que el programa sigue ejecutándose?
Hola Artficium:
Me refiero a que por decirlo así desaparece el color de fondo de la ventana del navegador y el enlace. En la misma venta aparece únicamente el resultado de la operación (5) y la ruedita de la pestaña del navegador sigue girando, por decirlo así como si siguiera esperando algo.

Gracias por tu contestación
  #6 (permalink)  
Antiguo 06/07/2012, 14:20
Avatar de Artificium  
Fecha de Ingreso: enero-2011
Mensajes: 492
Antigüedad: 13 años, 3 meses
Puntos: 81
Respuesta: Necesito asesoría con este código

Claro, es lo que debe aparecer. Bueno, te explico un poco por qué. Este código: window.document imprime en el documento un texto cualquiera, que también puede ser HTML, pero lo imprime en el body, por eso todo se pone blanco, ese método suele servir cuando se imprime en línea, no mediante un evento. Bueno, si quieres que imprima en un lugar cualquiera define un DIV y ponle un id. Digamos algo así:

<div id="resultado"></div>

Obviamente eso debe estar dentro del BODY, bueno ahora para mostrar el resultado del contenido ahí debes hacerlo de esta manera:

document.getElementById('resultado').innerHTML += (n + y) + '<br />';

Solo reemplaza window.document ... por el código que te he dado, con eso funcionará.
  #7 (permalink)  
Antiguo 06/07/2012, 15:58
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 6 meses
Puntos: 317
Respuesta: Necesito asesoría con este código

Mmmmm...

Me parece que tantos pedigüeños pretendiendo que les arreglemos sus páginas ya terminaron por quemarnos el cerebro.

No creo que a jorgemontoyab le sirva esa solución, Artificium. Él no la está usando para nada. Solamente quiere aprender, y es una prueba.
Lo que le interesa es saber cómo funciona, no cómo reemplazarla.

Veamos. Ese código tiene un par de inconvenientes. Dejando de lado que olvidaste ponerlo entre etiquetas [code] , eso que te marcó mechaz es cierto. Es una falla grave si está en el libro.
El atributo para cambiar de color el fondo metido en el body es bastante discutible. Pero lo dejamos pasar porque es un ejemplo.
Lo de disparar la función desde un link, ya sí es una burrada.
A menos que te lo adelantaran en el libro y esté, justamente, para probar que funciona, pero te avisan que es preferible usar un botón, o cualquier elemento con el evento onclick= (por mencionar uno).

Como te han explicado, lo que hace document.write() es reescribir todo el documento. No deja nada más que el resultado de la suma. No solamente borra el enlace, sino el documento con su color de fondo. Es lo mismo que abras con tu navegador una página que solamente tuviese escrito

Código:
5
Lo del iconito que sigue girando es justamente porque Firefox (en Chrome, por ejemplo, no pasa) se trula queriendo ir al destino del enlace. Destino que no existe. Y menos después de borrar el documento, ¿qué quieres que lea, si le borraste todo para meter el '5'?

Con darle un [Esc] la ruedita se para.
  #8 (permalink)  
Antiguo 06/07/2012, 17:51
 
Fecha de Ingreso: julio-2012
Mensajes: 10
Antigüedad: 11 años, 9 meses
Puntos: 0
De acuerdo Respuesta: Necesito asesoría con este código

Muchas gracias furoya y Artificium:
Tanto una como otra explicación son valederas. Por un lado entendí lo que estaba pasando y por otro lado aprendí qué es lo que se debe hacer para solucionarlo.
Precisamente porque no quiero ser pedigüeño en el futuro es que incomodo con preguntas que parecen demasiado elementales, pero
Cita:
el que no sabe es como el que no ve
.
Quedo muy agradecido. ¿Debo cerrar el tema en alguna parte?

Saludo
  #9 (permalink)  
Antiguo 06/07/2012, 18:32
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 6 meses
Puntos: 317
Respuesta: Necesito asesoría con este código

No, no hace falta. Queda por si alguien tiene alguna duda en consecuencia, o puede aportar algo más.

Y gracias a tí. En realidad esa pregunta puede ser elemental para un "experto", pero no incomoda para nada. No debería hacerlo.

El drama es que hay demasiada gente que viene a tirar de la manga con problemas avanzados (o no tanto) que no están en condiciones de resolver. Pero se meten lo mismo porque suponen que deúltima, se lo vamos a hacer nosotros.

Lo más lógico es que hagan lo que hiciste tú, que preguntas mientras vas aprendiendo, cuando algún comportamiento no está descripto en los manuales.

Pero repito : esa mayoría ya nos quemó la cabeza, ¡y ahora presuponemos que siempre vienen a pedir que les solucionemos su dilema práctico!.



( Gracias por el +1 )

Etiquetas: html, asesor
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 19:26.