This is the P2PU Archive. If you want the current site, go to www.p2pu.org!

Javascript 1-2-3

Actividades del curso

David Suárez's picture
Mon, 2011-01-31 06:47

Semana 1 [31-enero al 6-febrero]

Temas

  • Hacer las presentaciones de cada miembro en el foro.
  • Establecer, de ser posible, un horario común para hacer una o dos sesiones grupales a la semana, según la disponibilidad de tiempo y la ubicación geográfica de cada participante.
  • Revisar los temas del 1 al 4 del temario con ayuda del libro Introducción a Javascript (ver la página de recusos en línea), los capítulos 1 y 2 pueden servir para esta parte.

Primer ejercicio

Hay que leer los primeros dos capítulos del libro Introducción a Javascript y hacer como práctica el Ejercicio 1 que viene al final del capítulo 2. Si tienen problemas, allí mismo vienen las soluciones. Subir los archivos al servidor js123.dreamhosters.com en la carpeta js123 y probar que funcionen. Más datos sobre el servidor pueden ser consultados en la sección de Servidor web, en Course Material.

Bonus

Hay que crear una página como la que se requiere en el ejercicio 1 que hicieron como práctica (omitiendo el paso 1, por lo que el código JavaScript debe estar en el mismo archivo html y no en otro aparte). Hay que agregarle un poco más de contenido HTML. La página debe estar escrita en XHTML estricto e incluir el botón del W3C (http://validator.w3.org/) para validarla. Los mensajes que deben desplegarse son los siguientes:

  1. "Soy el primer script"
  2. "2<3 significa que dos es menor que tres"
  3. "<h1> es la etiqueta que marca el inicio de un encabezado de primer nivel"

Ahora hay que solucionar los errores que señala la validación.

Sugerencias

Semana 2 [7-febrero al 13-febrero]

Temas

  • Reforzar lo aprendido sobre el flujo de ejecución de Javascript .
  • Revisar los elementos básicos de programación en Javascript: variables, tipos de datos, operaciones. Utilizar el capítulo 3 del libro Introducción a Javascript, en particular las secciones 3.1-3.3.
  • Utilizar la consola (shell) de Javascript para agilizar el aprendizaje de la sintaxis y los elementos de programación: http://www.squarefree.com/shell/ (dar click donde dice Open the shell para abrir la consola).

Segundo ejercicio

Reunir las tareas indicadas en los ejercicios 2, 3 y 4 del libro, pero empleando, además de la función alert, la función document.write que se utiliza en el ejemplo empleado en la primera presentación: http://js123.dreamhosters.com/pares/pascalin/ejercicio01/index.html para imprimir en la ventana del navegador los resultados de las operaciones solicitadas en el ejercicio 4.

Bonus

  1. El código del segundo ejercicio debe seguir validando como XHTML estricto. Incluir el botón de validación.
  2. Hacer dos preguntas al usuario empleando la función confirm que se incluyó en el ejemplo de la presentación y almacenar los resultados en dos variables distintas.
  3. Escribir el resultado de combinar las dos respuestas del usuario con las operaciones lógicas && (AND) y || (OR).
  4. Emplear CSS para hacer que los resultados producidos por Javascript mediante la función document.write aparezcan resaltados en amarillo u algún otro color de su elección.

Sugerencias

Semana 3 [14-febrero al 20-febrero]

Temas

  • Control de flujo: if, if ... else, if ... else  if ... else, for, for ... in. Utilizar la sección 3.4 del libro Introducción a Javascript.
  • Funciones. Utilizar las secciones 3.5-4.2 del libro Introducción a Javascript.
  • Ejecución asíncrona de Javascript (impulsada por eventos). Utilizar el Capítulo 5 del Curso de Javascript (ojo, la información de este curso es algo vieja, pero servirá para darse una idea del tema). También les recomiendo una página que, aunque sólo está en inglés, es una consulta útil para revisar los elementos estándar de HTML: http://htmlhelp.com/reference/html40/alist.html en este sitio pueden revisar los atributos de cada elemento y ver así qué tipos de eventos se aceptan de manera estándar en HTML hasta la versión 4, y por lo tanto también en XHTML 1.0 y 1.1

Tercer ejercicio

Escribir un documento (X)HTML que incluya encabezados, imágenes, párrafos, botones, etc. Implementar tres funciones Javascript:

  1. La primera función debe mostrar al usuario el texto: "Hola eventos JavaScript".
  2. La segunda función debe preguntarle al usuario mediante una instrucción confirm si debe habilitar la tercera función.
  3. La tercera función debe pedir al usuario un texto, empleando la función prompt, debe preguntar al usuario mediante una instrucción confirm si debe mostrar sólo el conteo de las vocales y si el usuario contesta que sí, debe mostrar el conteo de vocales en el texto dado por el usuario, o si contesta negativamente, el conteo total de caracteres (la longitud del texto), mediante la función alert.

Cada función debe ejecutarse cuando se active un evento en la página. El texto de la página o un estilo particular con CSS debe hacer servir de guía al usuario sobre cuáles son los elementos activos (los que causarán que se ejecuten las funciones). La tercera función debe desactivarse cuando el usuario conteste negativamente a la pregunta de la segunda función, y activarse si contesta positivamente o si no se ha ejecutado la segunda función.

Bonus

  1. El código del tercer ejercicio debe seguir validando como XHTML estricto. Incluir el botón de validación.
  2. Implementar otras dos funciones, una que debe ejecutarse cada vez que se ejecute una de las primeras tres funciones y que debe llevar la cuenta de cuántas veces se ha ejecutado cada una. La otra función debe activarse empleando el evento onunload en el elemento body, de manera que muestre una ventana con alert que resuma el número de veces que se ejecutó cada función.

Sugerencias

  • Revisar con cuidado la sección 4.2 del libro Introducción a Javascript, donde se habla del ámbito de las variables, pues para este ejercicio se requerirá el uso de las infames, pero tan socorridas, variables globales.

Semana 4 [21-febrero al 27-febrero]

Temas

  • En esta semana revisaremos cómo emplear los objetos en Javascript. Aunque ya hemos empleado sin saberlo objetos, revisaremos por qué elementos se forma el objeto window que crean todos lo navegadores.
  • Objetos, métodos y atributos en Javascript.: el objeto window (utilizando objetos de Javascript). Utilizar el Curso de Javascript de Víctor M. Rivas Santos, del Capítulo 5. Window, las secciones de la 1 a la 2.3.
  • Explorando el Modelo de Objeto del Documento (DOM) con Javascript. Utilizar las secciones 5.1-5.3 del libro Introducción a Javascript.

Cuarto ejercicio

Todo navegador crea un objeto de tipo window que corresponde a cada ventana o pestaña abierta, y cada objeto window tiene un atributo document que se refiere a otro objeto de tipo HTMLDocument. En este ejercicio lo que hay que hacer es lo siguiente:

  1. Crear un documento (X)HTML que debe contener tres botones.
  2. Al activarse el primer botón, se debe preguntar al usuario mediante una llamada a confirm la dirección de una página web.
  3. Debe abrirse una nueva ventana (ventana 2) y cargar en ésta la dirección indicada por el usuario.
  4. El segundo botón, al activarse, debe mostrar en una ventana con la llamada alert la cantidad de nodos p y div que son nodos hijos del nodo correspondiente a la etiqueta body del documento cargado en la ventana 2.
  5. El tercer botón debe cerrar la ventana 2.

Bonus

  1. El código del tercer ejercicio debe seguir validando como XHTML estricto. Incluir el botón de validación.
  2. Además de los tres botones, incluir una imagen en el documento.
  3. Incluir un cuarto botón que cada vez que se presione cambie la imagen mostrada, de manera que al menos se muestren 3 imágenes distintas.

Sugerencias

  • Desde hace ya varios años la mayoría de los navegadores bloquean las ventanas que un programa Javascript intenta abrir, de manera que para que puedan realizar el ejercicio es posible que tengan que configurar su navegador para que no bloquee la apertura de ventanas, al menos para el servidor que estamos usando para los ejercicios.
  • Para el bono hay que tener en cuenta que los objetos tienen además de funciones propias (o métodos), variables propias (propiedades). En los tipos de objetos definidos por el propio lenguaje o incluidos en el navegador muchas propiedades son de solo lectura, como la propiedad length de los objetos String, de las cadenas de texto. Los objetos de tipo HTMLImageElement tienen una propiedad llamada src que corresponde con el atributo del mismo nombre del elemento html img.
  • En resumen, en tanto que a la propiedad length de las cadenas de texto no les podemos asignar un nuevo valor, a la propiedad src del nodo correspondiente a la imagen sí le podemos asignar un nuevo valor, como si se tratara de una variable cualquiera.

Semana 5 [28-febrero al 6-marzo]

Temas

  • Modificando el Modelo de Objeto del Documento (DOM) con Javascript. Utilizar las secciones 5.4 y 5.5 del libro Introducción a Javascript.
  • Javascript que no estorba. Revisar el Retos Javascript: Reto 7.

Semana 6 [7-marzo al 13-marzo]

Temas

  • Un poco más de eventos Javascript. Utilizar las secciones 6.1 y 6.2 del capítulo 6 del libro Introducción a Javascript. Particularmente les recomiendo poner atención en el uso de la variable this en el contexto de los manejadores de eventos.
  • Portabilidad del código Javascript y seguimiento de los estándares. Pueden utilizar el siguiente documento que trata acerca de algunos problemas con la compatibilidad de Javascript entre distintos navegadores. Incluye varias recomendaciones al respecto: Detección del navegador y cobertura a múltiples navegadores.

Quinto (o sexto) ejercicio

Modificar el código Javascript del siguiente documento: http://js123.dreamhosters.com/pares/pascalin/semana6/innerhtml.html De manera que haga lo siguiente:

  1. En lugar de un texto genérico, debe aparecer un texto diferente para cada persona.
  2. El texto debe cambiar cuando el puntero del ratón se coloque sobre la imagen, empleando el evento onmouseover, y cuando el puntero no esté apuntando a ninguna imagen debería aparecer un texto indicando lo que se debe hacer para que aparezca la información de cada usuario, emplear para esto el evento onmouseout.

Además de estos cambios en el funcionamiento, el código Javascript debe ser modificado de la siguiente manera:

  1. En lugar de emplear la propiedad innerHTML, usar las técnicas que hemos visto empleando el DOM para hacer los cambios.
  2. Debe emplearse Javascript no-obstructivo, por lo que el código JS debería estar en un archivo aparte.
  3. Seguir las sugerencias del documento sobre portabilidad del código en donde sea pertinente.

Bonus

  1. El código del tercer ejercicio debe seguir validando como XHTML estricto. Incluir el botón de validación.
  2. Además de cambiar el texto correspondiente a cada persona, cambiar también el fondo, los colores, y/o los bordes de manera que sea claro qué imagen corresponde con el texto mostrado en un momento dado.
  3. En el diseño de la aplicación, tener en cuenta las características de los navegadores o los usuarios que desactivan o no son capaces de ejecutar Javascript, de los lectores de pantalla que emplean las personas invidentes, y de los buscadores.

Sugerencias

  • Como se va a emplear JS no obstructivo, una manera de hacer que se muestren los textos adecuados cuando el cursor se posa sobre cada una de las imágenes es crear tres funciones distintas, algo así como muestraTextoRob(), muestraTextoAurora() y muestraTextoAlan(). Esta solución, si bien posible,es sumamente ineficiente. Para evitar hacer esto, podemos emplear la variable this dentro de una función que se encargue de cambiar todos los textos, para que lea un atributo que hayamos puesto en la etiqueta de imagen, y que sirva para decidir qué texto es el que se ha de mostrar.
  • Para el bono, les recomiendo investigar un poco en Internet acerca de accesibilidad del contenido y Javascript, pero de entrada una sugerencia es que es mejor que el texto, cuando sea posible, esté desde el principio y que se oculte al momento de cargar el documento, a que el contenido esté oculto de manera predeterminada, o que se cree completamente a partir de Javascript.

Comments

Una preguntilla. Qué

Aurora Perez's picture
Aurora Perez
Wed, 2011-02-02 11:50

Una preguntilla.

Qué programa recomiendas para hacer los ejercicios? Yo normalmente utilizo DreamWeaver (usando nada más la ventana de código) pero igual es recomendable usar otros editores de texto, a mí me suenan Smultron y Aptana pero no los he usado mucho.

Muchas gracias.

Un saludo

Aurora, cualquier editor de

David Suárez's picture
David Suárez
Wed, 2011-02-02 16:28

Aurora, cualquier editor de texto que te coloree el código es bueno. Yo mismo utilizo un editor genérico. Espero tener oportunidad en este curso de ver qué otras opciones hay de editores que ofrezcan más prestaciones para Javascript, sobre todo que sean software libre.

Gracias otra vez David :D

Aurora Perez's picture
Aurora Perez
Wed, 2011-02-02 17:00

Gracias otra vez David

:D

Una vez terminado el

Carla's picture
Carla
Wed, 2011-02-02 18:41

Una vez terminado el ejercicio y subido, como es? Se avisa? Los archivos tienen que tener algun nombre particular? (mas que nada para ir identificando los distintos ejercicios). Muchas gracias :)

Hola Carla, el primer

David Suárez's picture
David Suárez
Wed, 2011-02-02 20:30

Hola Carla, el primer ejercicio lo pueden subir dentro de la carpeta js123/nombre_de_usuario/ejecicio01/ y si hacen el ejecicio "Bonus", éste lo pueden poner en js123/nombre_de_usuario/ejecicio01/bonus/

hola david, se puede hacer el

Fernando Balderrama's picture
Fernando Balderrama
Wed, 2011-02-02 22:39

hola david, se puede hacer el ejercicio 1 y el bonus en un mismo archivo?

Hola Fernando, sí se puede,

David Suárez's picture
David Suárez
Thu, 2011-02-03 06:41

Hola Fernando, sí se puede, siempre y cuando el archivo cumpla con lo que se pide en ambos ejercicios.

Hola david, quiero hacerte

Rodny Perez's picture
Rodny Perez
Thu, 2011-02-03 08:47

Hola david, quiero hacerte una pregunta.. que quieres decir con "incluir el botón del W3C"?

Hola Rodny. Cuando logras que

David Suárez's picture
David Suárez
Thu, 2011-02-03 18:32

Hola Rodny. Cuando logras que un documento HTML pase la validación del W3C, en la misma página te aparece hasta abajo una sección llamada "Congratulations" y allí mismo una leyenda que dice "'valid' Icon(s) on your Web page". Te aparece debajo de esta leyenda una imagen, y al lado derecho el código que tienes que insertar en tu página HTML para que aparezca la imagen y que cuando se haga click sobre ella se muestre si o no el HTML de la página es válido.

Hola, podría alguien decirme

Luis Palomo's picture
Luis Palomo
Fri, 2011-02-04 02:43

Hola, podría alguien decirme la pass del servidor ftp?, no me ha llegado ningún correo. Además quería saber si a alguien le pasa que una vez reemplazados los carácteres raros por la entidad de internalización (para validar), los alert no se ven bien, los muestra textual, no como secuencia de escape; dejo una foto Enlace externo

Hola Luis, te mando ahorita

David Suárez's picture
David Suárez
Fri, 2011-02-04 02:54

Hola Luis, te mando ahorita la contraseña por correo. Si a alguien más no le llegó, avíseme para mandársela individualmente.

les recomiendo open

Humberto Ruiz's picture
Humberto Ruiz
Fri, 2011-02-04 04:21

les recomiendo open komodo(gratuito) para editar codigo o textmate(pago)

www.openkomodo.org

Luis, acerca de las

David Suárez's picture
David Suárez
Fri, 2011-02-04 04:28

Luis, acerca de las entidades, el problema es que Javascript no da ningún tratamiento especial a las entidades de HTML, sino que las trata como cualquier otra cadena de texto. Una posible solución para no poner un cáracter es emplear el método String.fromCharCode(n). Si quieren hacer la prueba, utilicen lo siguiente: String.fromCharCode(72,79,76,65)
Más adelante podemos hacer algunos ejecicios para entender por qué algunas cosas funcionan y otras no.

Gracias. Ya resolví los

Luis Palomo's picture
Luis Palomo
Fri, 2011-02-04 04:28

Gracias. Ya resolví los problemas que tenía, era una tontera. incluso la misma descripción del problema menciona lo de CDATA

"3<2 significa que tres es

Miguel David's picture
Miguel David
Fri, 2011-02-04 06:17

"3<2 significa que tres es mayor que 2"
Esta frase esta mal :)
Ya termine el Ejercicio, y el bono.

Ja ja ja, tienes toda la

David Suárez's picture
David Suárez
Fri, 2011-02-04 06:26

Ja ja ja, tienes toda la razón, al final cambié el signo y no corregí la frase.

Hola Aún no me llega la pass

Alberto Vazquez's picture
Alberto Vazquez
Fri, 2011-02-04 07:37

Hola
Aún no me llega la pass del servidor.
Gracias.

tambien yo ya acabe el

Hector Ocegueda's picture
Hector Ocegueda
Fri, 2011-02-04 08:01

tambien yo ya acabe el ejercicio y el bonus saludos.

Hola que tal, perdon por no

Rodny Perez's picture
Rodny Perez
Mon, 2011-02-07 07:28

Hola que tal, perdon por no participar en la reunion pasada, me toco trabajar. Estoy ansioso por el proximo ejercicio. Saludos.

Acabo de poner los datos para

David Suárez's picture
David Suárez
Tue, 2011-02-08 08:26

Acabo de poner los datos para esta semana: las tareas y el ejercicio, más el bono. Otra vez hay que poner todo en el servidor, como la vez pasada.
Además voy a crear un tema del foro llamado "Dudas de programación" para que allí contestemos entre todos cualquier duda que surja, intentando no salirnos de los temas de la semana para no confundir a los que están empezando a programar.
¡Que sea una gran semana para todos!

¡Felíz San Valentín para

David Suárez's picture
David Suárez
Tue, 2011-02-15 07:25

¡Felíz San Valentín para todos!
Ya están listas las actividades de la semana. Las tareas y el ejercicio, más el bono. Ya tenemos unas actividades más complicadas, pero espero que nadie se quede atrás. Usen con confianza el tema de "Dudas de programación" en el foro, y si lo requieren, podríamos también tener algún día, antes del domingo, una media hora de chat para resolver dudas.
¡Que sea una gran semana!

estaria bien eso de tener una

Humberto Ruiz's picture
Humberto Ruiz
Mon, 2011-02-21 07:41

estaria bien eso de tener una dia de chat antes de las reuniones semanales para resolver dudas o comparar lo que hacemos cada uno, es cuestion que nos pongamos de acuerdo ...

Hola a todos, ya agregué la

David Suárez's picture
David Suárez
Wed, 2011-02-23 06:14

Hola a todos, ya agregué la lista con los temas de la semana, el ejercicio y el bono, así como un par de sugerencias: http://p2pu.org/webcraft/node/13924/document/25531#sem4
Espero que se diviertan.

Hola a todos. Como les

David Suárez's picture
David Suárez
Thu, 2011-02-24 04:56

Hola a todos. Como les comenté a varios de ustedes en nuestra reunión del domingo pasado, aunque ya he revisado varios de los ejercicios que han subido al servidor, no les he comunicado ningún comentario. Voy a empezar mañana a hacer esto, así que les pido que en su carpeta dentro del servidor pongan un archivo index.html donde venga la liga a cada uno de sus ejercicios, y que me manden un correo cuando ya lo hayan hecho, de manera que yo pueda ir dejándoles mis comentarios.
Estos comentarios los podrán consultar en la página: http://js123.dreamhosters.com/javascript-1-2-3/

David no entiendo este punto

Humberto Ruiz's picture
Humberto Ruiz
Sat, 2011-02-26 00:39

David no entiendo este punto :S
--> El segundo botón, al activarse, debe mostrar en una ventana con la llamada alert la cantidad de nodos p y div que son nodos hijos del nodo correspondiente a la etiqueta body.

Humberto, como habrás visto

David Suárez's picture
David Suárez
Sat, 2011-02-26 01:42

Humberto, como habrás visto en el libro "Introducción a Javascript", el modelo DOM representa un documento como un árbol. De manera que en un documento como el siguiente:

<html><head><title>Titulo</title></head>
<body><div><p>Texto</p></div><p></p></body>
</html>

El nodo que corresponde a la etiqueta html tendrá como nodos hijos a head y a body. head tendrá un nodo hijo: title, y body tendrá dos hijos: un div y un p. A su vez el nodo div tendrá un nodo hijo p, y este un nodo hijo que será un nodo de texto.
Pueden usar un documento como este para las pruebas y tu programa debería mostrar en la ventana de alert que hay un nodo div y un nodo p.
Espero que esto ayude. Si hay alguna otra pregunta, no duden en ponerla.

Hola David, he estado

Luis Palomo's picture
Luis Palomo
Sun, 2011-02-27 00:23

Hola David, he estado intentando crear la función del contador, y aunque por más que veo el código no encuentro error, esta simplemente no funciona :s

El código es algo como esto:

var url = prompt("Ingresa la URL", "http://");
var ventana = window.open(url);
alert("Hay "+ventana.document.body.getElementsByTagName("p").length+" <p> en el body");

El error está en la sentencia alert, con mis pocos conocimientos, pienso que puede ser porque no se ha generado el árbol de DOM, por lo que agregué el siguiente evento:
ventana.onload = function() {
window.document.getElementById("b2").disabled = false; //activa el botón que lanza el alert
}

pero el botón nunca se habilita...
Ojalá alguien me pueda dar unas pistas, ¡saludos!.

Hola Luis, sí, lo siento, el

David Suárez's picture
David Suárez
Sun, 2011-02-27 04:33

Hola Luis, sí, lo siento, el problema que encontraste tiene que ver con las restricciones de seguridad que los navegadores imponen sobre Javascript. Les recomiendo, por lo tanto, que para probar su código empleen una dirección URL dentro del mismo servidor. Pueden intentar con este archivo: http://js123.dreamhosters.com/pares/pascalin/semana4/prueba.html o con algún otro, pero que esté en este mismo servidor.

uff, gracias David,

Luis Palomo's picture
Luis Palomo
Tue, 2011-03-01 16:22

uff, gracias David, justamente éso era, y pensar que me tubo un buen tiempo buscando un bug inexistente :(

Hola a todos, esta semana no

David Suárez's picture
David Suárez
Wed, 2011-03-02 07:33

Hola a todos, esta semana no tendremos ejercicio, pues yo creo que es mejor que aprovechen la oportunidad de hacer los retos Javascript. Así repasan lo que hemos visto con las lecturas y en las reuniones semanales.
Sólo nos quedaría para esta semana leer las secciones 5.4 y 5.5 del libro "Introducción a Javascript", para concluir con cómo modificar el DOM desde Javascript, y revisar también el reto 7 de Javascript, sobre cómo crear Javascript no obstructivo.
Espero que todos le entren a los retos ;)

Lo mejor un editor de texto

Serg Vergara's picture
Serg Vergara
Wed, 2011-03-02 22:02

Lo mejor un editor de texto que te coloree el texto dependiendo del lenguaje...yo uso Kate y para windows Ultraedit

textmate o coda para mac...

Humberto Ruiz's picture
Humberto Ruiz
Wed, 2011-03-02 22:54

textmate o coda para mac...

Hola a todos, acabo de

David Suárez's picture
David Suárez
Wed, 2011-03-09 05:02

Hola a todos, acabo de agregar los temas para esta última semana, el ejercicio y el bono: http://p2pu.org/webcraft/javascript-1-2-3/document/actividades-del-curso...

Si alguien ha tenido

David Suárez's picture
David Suárez
Wed, 2011-03-09 05:06

Si alguien ha tenido problemas con los retos Javascript que implican el trabajo con formularios, le recomiendo revisar el capítulo 7: Formularios (http://www.librosweb.es/javascript/capitulo7.html), del libro "Introducción a Javascript".