Foros del Web » Programando para Internet » Javascript »

writeln y setTimeout

Estas en el tema de writeln y setTimeout en el foro de Javascript en Foros del Web. Estoy comenzando con javascript pero en el libro que estoy usando no me especifican dos cosas que aperecen en uno de sus ejemplos. el siguiente ...
  #1 (permalink)  
Antiguo 10/11/2004, 07:08
 
Fecha de Ingreso: septiembre-2004
Mensajes: 6
Antigüedad: 19 años, 8 meses
Puntos: 0
Pregunta writeln y setTimeout

Estoy comenzando con javascript pero en el libro que estoy usando no me especifican dos cosas que aperecen en uno de sus ejemplos.

el siguiente programa abre una ventana nueva que imprime la hora del dia en cada segundo.

primero, no se cuando debo usar document.writeln en lugar de document.write. y en segundo lugar no entiendo por que en la funcion
setTimeout la expresion que llama a la funcion establece_hora(par_ventana) usa el el parametro "nueva" con dos caracteres "\". De la siguiente forma ("establece_hora(\"nueva\")

<html>
<head>
<title>Mantenimiento de la hora en una nueva ventana</title>
<script>
function fincarga()
{
nueva=window.open("", "Hora",
"menubar=no, scrollbars=yes, width=350, height=120, top=500, left=500");
nueva.document.writeln("<html><head><title>");
nueva.document.writeln("Fecha y hora del computador local");
nueva.document.writeln("</title></head>");
nueva.document.writeln("fecha y hora del computador local<br>");
nueva.document.writeln("<body bgcolor=#ffff90>");
setTimeout("establece_hora(\"nueva\")",1000);
}
function establece_hora(par_ventana)
{
var ventana;
var fecha;
fecha=new Date();
ventana=eval(par_ventana);
ano=parseInt(fecha.getYear(),10);
if (navigator.appName == "Netscape")
ano += 1900;
ventana.document.writeln(fecha.getDate() + "/" + (fecha.getMonth()+1) + "/" + ano + " ");
ventana.document.writeln(fecha.getHours() + ":" + fecha.getMinutes() + ":" + fecha.getSeconds() + "<br>");
setTimeout("establece_hora(\"nueva\")", 1000);
}
</script>
</head>
<body bgcolor="#FFFF90">
<h1>Genera la hora cada segundo en una nueva ventana</h1>
Se mantiene la hora actualizada en una nueva ventana.
<script>

fincarga();
</script>


</body>
</html>

Les agradesco su ayuda
  #2 (permalink)  
Antiguo 10/11/2004, 07:43
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Hola delOS y bienvenido al foro.

Primera:
Cuando usas los comandos write y writeln de JavaScript, estas insertando código HTML al momento de cargar la página, es decir, cuando se este cargando dicha página en el browser, todos los comandos javascript que esten fuera de las funciones se ejecutan, y si existe algún write, es porque el programador desea poner código HTML en ese sitio generado dinámicamente. Si entiendes eso (toda una proeza por lo malo de mi redacción) entonces solo queda decir que write escribe lo que le pases como parámetro y writeln hace lo mismo pero luego salta de linea.

Con un ejemplo se ve mejor:

Código PHP:
<a>
<
script language='javascript'>
write('Enlace');
</script>
</a> 
Equivale a:

Código PHP:
<a>
Enlace</a
Mientras que:

Código PHP:
<a>
<
script language='javascript'>
writeln('Enlace');
</script>
</a> 
Equivale a:

Código PHP:
<a>
Enlace
</a
Como verás, ambos te generan el mismo enlace, la diferencia solo la vería el browser internamente.

Segunda:
El caracter \ sirve para especificar un caracter especial, por ejemplo:

\" equivale a "
\' equivale a '
\\ equivale a \\

En el código que estas estudiando: setTimeout("establece_hora(\"nueva\")",1000);, el programador no podía poner una comilla doble (") porque cerraría la primera que estaba abierta y generaría un error de sintaxis, por eso la coloca como \", también ha podido usar comillas simples para resolver la parte interna. Asi:

Código PHP:
setTimeout("establece_hora('nueva')",1000); 
Saludos.
  #3 (permalink)  
Antiguo 12/11/2004, 10:44
 
Fecha de Ingreso: septiembre-2004
Mensajes: 6
Antigüedad: 19 años, 8 meses
Puntos: 0
Lo de writeln y los caracteres especiales ya quedo claro. Sin embargo no entiendo la necesidad de encerrar nueva en comilllas.

Un saludo y mil gracias
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 22:25.