Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
APLICACIONES WEB
LENGUAJES DE SCRIPT: JAVASCRIPT
1. INTRODUCCIN.........................................................................................................................2
2. CMO INSERTAR CDIGO JAVASCRIPT EN HTML......................................................2
3. COMENTARIOS..........................................................................................................................5
4. JAVASCRIPT EN NAVEGADORES ANTIGUOS.................................................................5
5. CONSIDERACIONES SOBRE JAVASCRIPT ......................................................................5
6. MTODO WRITE........................................................................................................................6
7. ALMACENAMIENTO DE DATOS...........................................................................................6
8. OPERADORES..............................................................................................................................9
9. INTERACCIN CON EL USUARIO .....................................................................................11
10. ESTRUCTURAS DE CONTROL ............................................................................................12
11. ARRAYS......................................................................................................................................19
12. FUNCIONES ............................................................................................................................20
13. OBJETOS EN JAVASCRIPT................................................................................................24
14. LA CLASE STRING.................................................................................................................25
15. LA CLASE MATH.....................................................................................................................28
16. ERRORES COMUNES Y CONSEJOS DE PROGRAMACIN ........................................28
17. D.O.M. (Modelo de Objetos del Documento) ....................................................................29
18. PROPIEDADES Y MTODOS DEL OBJETO WINDOW ...............................................32
19. PROPIEDADES Y MTODOS DEL OBJETO DOCUMENT............................................34
20. MANEJO DE ELEMENTOS DE UN FORMULARIO CON JAVASCRIPT ..................37
21. EVENTOS..................................................................................................................................43
22. EJECUCIONES PERIDICAS: setInterval.....................................................................51
23. BIBLIOGRAFA ......................................................................................................................53
Pgina 1/53
Aplicaciones Web
1. INTRODUCCIN
JavaScript es un lenguaje interpretado por el navegador, basado en objetos y dirigido a proporcionar una
mayor flexibilidad a los documentos web que, diseados solamente con HTML, resultan estticos. El cdigo
acompaa al HTML y permite una programacin destinada a manipular los elementos de dichos
documentos. Su primer nombre fue "LiveScript" y fu diseado por Netscape. Microsoft contraatac con
su propia versin que denomin "JScript".
JavaScript fue diseado para dar cierto dinamismo al comportamiento de los documentos web, ya que
stos resultan absolutamente estticos si son desarrollados exclusivamente con HTML. JavaScript
permite variar la apariencia o el comportamiento de los diferentes elementos que lo componen en funcin
de la deteccin de lo que ocurre en ella, ya bien sea por haberlo provocado el usuario, o bien, el propio
cdigo del programa. As, algunos de los usos ms tpicos que a JavaScript se le dan, son:
Control del comportamiento del navegador
Control de elementos obligatorios en un formulario
Control de formatos de entrada en formularios
Cambio de imgenes en un documento
La posibilidad de que se puedan escribir cdigos maliciosos con intencin de daar o "invadir" los
ordenadores que se conecten, es muy alta. Por esto, hay una serie de limitaciones en cuanto a la
funcionalidad del lenguaje que intentan poner a salvo de estas malas prcticas al ordenador del usuario que
se conecta:
JavaScript no tiene capacidades grficas
El lenguaje no puede escribir ni leer de ficheros del disco del ordenador cliente
No soporta ninguna gestin de transmisin, excepto la posibilidad de conectarse a una URL
Para programar en JavaScript necesitamos, bsicamente, lo mismo que para desarrollar pginas web en
HTML: un editor de texto y un navegador compatible con JavaScript, aunque hay editores especficos
que nos pueden ayudar en la programacin con cdigos de colores, ayudas, (notepad ++, html kit, ).
Veamos la pinta que tiene un cdigo escrito en JavaScript:
var numero1=23, numero2=63;
if (numero1==numero2) {
document.write (Los dos nmeros son iguales);
}
else {
if (numero1 > numero2) {
document.write (El primer nmero es mayor);
}
else {
document.write (El segundo nmero es mayor);
}
}
Pgina 2/53
Aplicaciones Web
En ficheros externos
type="text/JavaScript" language=JavaScript>
document.write('JavaScript dentro de la parte body');
</script>
<br />Texto final
</body>
</html>
2.2. JavaScript en los eventos
Los eventos son acciones que realiza el usuario. JavaScript atrapa determinadas acciones realizadas en
una pgina web y realiza acciones como respuesta, de esta manera se pueden realizar programas
interactivos, ya que controlamos los movimientos del usuario y respondemos a ellos. Existen muchos
eventos distintos, por ejemplo, pulsar un botn del ratn, moverlo o seleccionar texto en una pgina. El
cdigo JavaScript asociado a un evento se indica dentro la etiqueta HTML del elemento sobre el que se
desea detectar el evento; concretamente dentro de un atributo llamando manejador de eventos. En este
ejemplo, onClick se dispara cada vez que el usuario pulsa el botn. Una vez que se dispara, se ejecuta el
cdigo que aparece a su derecha entre comillas, despus del smbolo "=".
EJEMPLO 2
<html>
<head>
<title>Eventos</title>
</head>
<body>
<hr /><center>
Esto sera una pgina con informacin y un formulario
Cada vez que se pulse el botn, se ejecuta la instruccin de JavaScript
<hr />
Pgina 3/53
Aplicaciones Web
Pgina 4/53
Aplicaciones Web
3. COMENTARIOS
Un comentario es una parte del cdigo que no es interpretada por el navegador y que ayuda al programador
o a otro personal a entender lo que se est haciendo en el programa.
Comentarios de una lnea: // Aqu va el texto del comentario
Comentarios de varias lneas: /* Esto es un comentario que puede
ocupar varias lneas */
Pgina 5/53
Aplicaciones Web
6. MTODO WRITE
document.write( ) es un mtodo del objeto document que permite escribir cdigo html dentro del
documento actual.
EJEMPLO 5
<html>
<head>
<title>Primer ejemplo JS</title>
</head>
<body>
Texto inicial
<script language="JavaScript">
document.write('<hr /><b>JavaScript</b> dentro de la parte body');
</script>
<br />Texto final
</body>
</html>
La salida en el navegador es:
Texto inicial
JavaScript dentro de la parte body
Texto final
7. ALMACENAMIENTO DE DATOS
Una variable es un espacio en memoria donde se almacena un dato; un espacio donde podemos guardar
cualquier tipo de informacin que necesitemos para realizar las acciones de nuestros programas. Cada vez
que se utiliza el nombre de una variable, el navegador lo sustituye por su valor en ese momento.
JavaScript es un lenguaje no tipado, es decir, no es necesario declarar las variables indicando el tipo de
valores que van a contener, aunque s es conveniente declararlas para dar ms claridad al cdigo.
Simplemente, cuando se almacena en una variable un valor, el propio intrprete del navegador, la
crea y le asigna dicho valor.
La declaracin de las variables, aunque no es obligatoria, se hace al principio del script y se utiliza la
palabra reservada var. La declaracin de variables consiste en definir e informar al sistema de que se va a
utilizar una variable. Los nombres de las variables no pueden tener espacios blancos y deben comenzar por
una letra o un guin bajo, y los valores se asignan con el smbolo = . Tambin podemos declarar varias
variables en una sola lnea, separando las variables por comas. Cuando se le asigna un valor por primera vez
a una variable se denomina inicializar una variable.
variable="hola"; //inicializacin de variable
var cinco=5;
cuatro=4;
var nombre="Agustn", cadena=""; //declaracin mltiple
sumando1=23;
sumando2=33;
suma = sumando1 + sumando2;
El nombre de las variables debe ser significativo y hacer referencia a su uso o contenido.
Pgina 6/53
Aplicaciones Web
El mbito de una variable es el lugar donde est disponible. Por lo general, las variables que declaremos
en una pgina, estarn accesibles dentro de ella. En JavaScript no podremos acceder a variables que hayan
sido definidas en otra pgina. Segn su mbito, tenemos dos tipos de variables: locales y globales. Las
variables globales son visibles desde cualquier sitio del programa; las locales slo son visibles en el bloque
donde han sido declaradas.
Variables globales: son accesibles desde cualquier lugar de la pgina, es decir, desde el script
donde se han declarado y todos los dems scripts de la pgina.
<script>
variableGlobal;
</script>
Variables locales: son accesibles slo en una parte acotada del cdigo, y, fuera de este cdigo,
dejan de existir. Son mbitos locales cualquier lugar acotado por llaves. No hay problema en
declarar variables locales con el mismo nombre que otras globales, porque la que tiene validez es la
ltima que se declara (en este caso, la local); aunque es ms aconsejable no repetir nombres de
variables dentro de una misma pgina. Es necesario que se utilice la declaracin explcita con var
para las variables locales, ya que, si no se utiliza, la variable ser global.
<script>
{
var variableLocal;
variableGlobal; // NO se ha declarado con var
}
</script>
Si no se declaran las variables explcitamente, se interpretarn como globales.
Los tipos bsicos de datos que una variable puede contener son:
Pgina 7/53
Aplicaciones Web
Booleanos: Hay dos valores booleanos: true y false (verdadero y falso). Los booleanos se utilizan
para tomar decisiones, en sentencias de control como la siguiente:
if ( numero > 18 ) {
// hacer algo
}
UNDEFINED vs NULL
Existe cierta confusin entre estos valores. La clave para entender la diferencia radica en la
nocin de existencia. Si una variable es:
undefined: para JavaScript, no existe. O bien no ha sido declarada o jams se le asign
un valor.
null: para JavaScript, la variable existe. En algn momento, explcitamente, la variable se
estableci a null. null significa nulo. null es un valor, es decir, no es lo mismo que vaco.
Se trata de un valor que se puede asignar a una variable cuando queremos indicar que una
variable no tiene un valor en concreto.
As que, a la hora de usar uno u otro debemos ver si estamos preguntando por la existencia de una
variable. Si es el caso, usaremos undefined. En caso de que preguntemos por si la variable contiene
un valor seguro o no, como ocurrira en Java, C++ o C# usaremos null.
undefined == null // es true debido a la conversin de tipos
undefined === null // false
EJEMPLO 6
<html>
<head>
<title>Variables sin valor</title>
</head>
<body>
<script type="text/JavaScript" language='JavaScript'>
var Edad;
switch (Edad) {
case undefined:
document.write ("Undefined. La edad no tiene valor inicial.
Edad=" + Edad + "<br/>");
break;
case null:
document.write ("La edad contiene el valor null.
Edad=" + Edad + "<br/>");
break;
default:
document.write ("El valor de Edad es: " + Edad + "<br/>");
}
</script>
</body>
</html>
Debido a que, como ya hemos dicho, JavaScript
contener valores de distinto tipo:
A=2;
//variable
//variable
A="dos";
A=true;
//variable
Pgina 8/53
Aplicaciones Web
LA FUNCIN typeof
Devuelve una cadena que describe el tipo de operando: boolean, number, string o object.
Sintaxis: typeof (valor)
EJEMPLO 7
<html>
<head>
<title>Uso del typeof</title>
</head>
<body>
<script type="text/JavaScript" language=JavaScript>
var MiNombre;
var UnNumero=5, OtroNumero=10;
var continuar = true;
MiNombre="Ana";
document.write('El contenido de MiNombre es ' + MiNombre + ' y es de
tipo ' + typeof(MiNombre) + '<br />');
document.write('El contenido de UnNumero es ' + UnNumero + ' y es de
tipo ' + typeof(UnNumero) + '<br />');
document.write('El contenido de OtroNumero es ' + OtroNumero + ' y es
de tipo ' + typeof(OtroNumero) + '<br />');
document.write('El contenido de continuar es ' + continuar + ' y es de
tipo ' + typeof(continuar) + '<br />');
</script>
</body>
</html>
La salida que produce este cdigo es:
8. OPERADORES
Los operadores sirven para hacer los clculos y operaciones necesarios para llevar a cabo los
objetivos del programa.
OPERADOR
Operador
Aritmtico
+ - * /
%
++ -Operadores
de Relacin
==
===
DESCRIPCIN
Realizan operaciones matemticas simples.
Suma Resta Multiplicacin Divisin de nmeros
Resto de la divisin entera. Es tpico calcular si un n es par haciendo: num%2 == 0
Incremento (suma 1) / Decremento (resta 1) de una variable
Comparan dos valores devolviendo true o false en funcin de que se cumpla la
relacin indicada.
Igual que
Igual que en sentido estricto .
Los comparadores estrictos exigen no solo que los valores comparados sean iguales en
valor, sino tambin en tipo. Ejemplo:
cadena31 = "31";
numero31 = 31;
Pgina 9/53
Aplicaciones Web
!=
!==
> >=
< <=
Operadores
Lgicos
!
&&
||
Operadores
de Asignacin
=
+=
-=
*=
/=
%=
Operadores
de Cadenas
Distinto
Distinto en sentido estricto
Mayor - Mayor o igual
Menor - Menor o igual
Se aplican sobre operadores booleanos y sirven para tomar decisiones:
joven = (edad >= 18) && (edad <= 30); //se deben cumplir las dos condiciones
correcto = !(a < b) || (c == d);//se debe cumplir al menos una de las dos condiciones
Not : transforma true en false y viceversa
And : obliga a que se cumplan todas las condiciones para devolver true. Si hay alguna que
sea falsa, devuelve false.
Or : devuelve true si una de las condiciones es true. Si todas son falsas, devuelve false.
Sirven para asignar valores a las variables.
Asigna un valor a una variable
Asignacin con suma
x += y
Asignacin con resta
x -= y
Asignacin con producto
x *= y
Asignacin con divisin
x /= y
Asignacin con resto
x %= y
equivale
equivale
equivale
equivale
equivale
a
a
a
a
a
x
x
x
x
x
=x
=x
=x
=x
=x
+y
-y
*y
/y
%y
parseInt (cadena, base) examina la cadena recibida y trata de convertirla en un nmero entero
en la base especificada como parmetro (decimal si no se indica). Devuelve el valor especial NaN
(Not a Number) si no puede obtener un nmero.
parseFloat (cadena) convierte la cadena que se le pasa en un real. Si no lo consigue, asigna el valor
especial NaN.
En JavaScript tambin existe la funcin isNaN(valor) que comprueba si el valor es NaN. Devuelve true si
el valor no es un nmero (Not a Number) y false cuando lo es. Esta funcin se suele utilizar en combinacin
con las anteriores para comprobar si la conversin ha funcionado correctamente:
x = parseInt(A3);
if ( isNaN(x) ) alert(la conversin ha fallado);
else alert(El nmero convertido es + x);
Pgina 10/53
Aplicaciones Web
LA FUNCIN EVAL
eval(cadena); devuelve el resultado de ejecutar el cdigo JavaScript contenido en la cadena.
x=5;
eval(document.write( + x + )); /* la funcin eval reconstruye
instruccin document.write y la ejecuta: document.write(x); */
la
EJEMPLO 8
<html>
<head><title>alert y prompt</title></head>
<body>
<script type='text/JavaScript' language='JavaScript'>
var Edad;
Edad = prompt ('Dame tu edad');
alert ('Tu edad es ' + Edad);
</script>
</body>
</html>
variable = confirm(texto); Aparece una ventana con dos botones (Aceptar y Cancelar). El botn
que se pulsa es el que se almacena en la variable (true o false respectivamente).
EJEMPLO 9
<html>
<head><title>confirm</title></head>
<body>
Pgina 11/53
Aplicaciones Web
variable = prompt(texto,cadena que aparece por defecto); Aparece una ventana en la que se
pide un dato al usuario con dos botones (OK y Cancel). Si se pulsa OK el valor tecleado se almacena
en la variable.
EJEMPLO 10
<html>
<head><title>prompt</title></head>
<body>
<script type='text/JavaScript' language='JavaScript'>
var Edad;
Edad = prompt ('Dame tu edad');
alert ('Tu edad es ' + Edad);
</script>
</body>
</html>
Hay que observar que en la ventana que abre esta funcin como valor por defecto aparece
undefined. Si no queremos que le aparezca este valor al usuario, podemos evitarlo: prompt acepta
un segundo parmetro que ser la cadena que debe aparecer por defecto. Si el valor que le
pasamos a este segundo parmetro es una cadena vaca, conseguimos que no aparezca el indeseado
valor: prompt ('Dame tu edad', )
Pero qu ocurre si introducimos en la caja de texto un valor que no sea numrico?: esto no
provoca un error del programa pero s que es un error de funcionamiento. Para evitarlo podemos
ejecutar la funcin parseInt para convertir una cadena de caracteres en nmero.
alternativas: if, switch. Sirven para tomar decisiones sobre las acciones a realizar en funcin del
estado de las variables.
repetitivas: for, while, do-while. Se utilizan para realizar ciertas acciones repetidamente.
Todas las palabras clave de las estructuras de control se escriben siempre en minsculas.
Pgina 12/53
Aplicaciones Web
10.1 LA INSTRUCCIN IF
if (condicin) {
Bloque 1;
}
else {
Bloque 2;
}
El contenido de cada uno de los bloques debe escribirse con un sangrado a la derecha, ya
que esto da ms claridad al cdigo, sobre todo, cuando varios programadores se
encarguen de trabajar con el mismo cdigo.
EJEMPLO 11
<html>
<head> <title>if</title> </head>
<body>
<script type='text/JavaScript' language='JavaScript'>
var Edad;
Edad = prompt ('Dame tu edad',"");
if ( Edad < 18 )
alert ('Eres muy joven');
else
alert ('Eres mayor de edad');
</script>
</body>
</html>
Hay una versin corta para la instruccin if que se usa mucho para comprobar pequeas condiciones:
variable = (condicion)? valor1 : valor2;
es equivalente a:
if (condicion)
variable = valor1;
else
variable = valor2;
Las instrucciones IF se pueden anidar, es decir, podemos colocar sentencias IF dentro de otras sentencias
IF, dentro de la parte IF o dentro de la parte ELSE.
EJEMPLO 12
<html>
<head> <title>if anidado</title> </head>
<body>
<script type='text/JavaScript' language='JavaScript'>
var numero1=23, numero2=63;
if (numero1==numero2)
document.write (Los dos nmeros son iguales);
else {
if (numero1 > numero2)
document.write (El primer nmero es mayor);
else
document.write (El segundo nmero es mayor);
}
</script>
Pgina 13/53
Aplicaciones Web
</body>
</html>
Pgina 14/53
Aplicaciones Web
2.
3.
4.
5.
Se vuelve al paso 2.
EJEMPLO 13
<html>
<head> <title>for</title> </head>
<body>
<script type='text/JavaScript' language='JavaScript'>
var x, indice;
x = prompt ('Introduce el nmero de vueltas: ', "0");
for ( indice=0; indice<x; indice++ )
document.write('Vuelta nmero ' + indice + '<br/>');
document.write('<hr />');
for ( indice=x; indice>0; indice-- )
document.write('Vuelta nmero ' + indice + '<br/>');
</script>
</body>
</html>
Un ejemplo de uso de un bucle for en una pgina web es el siguiente:
EJEMPLO 14
<html>
<head> <title>Ejemplo bucle FOR</title>
<body>
</head>
Pgina 15/53
Aplicaciones Web
<script>
var i;
for (i=1; i<=6; i++) {
document.write("<H" + i + ">Encabezado de nivel " + i + "</H" + i + ">");
}
</script>
</body>
</html>
El script escrito en negrita sera equivalente a escribir el siguiente cdigo HTML:
<h1>Encabezado de nivel 1</h1>
<h2>Encabezado de nivel 2</h2>
<h3>Encabezado de nivel 3</h3>
<h4>Encabezado de nivel 4</h4>
<h5>Encabezado de nivel 5</h5>
<h6>Encabezado de nivel 6</h6>
Y la salida que se produce sera:
EJEMPLO 15
<html>
<head> <title>Ejemplo de while</title> </head>
<body>
<script type="text/JavaScript" language='JavaScript'>
var x, ndice, Edad;
x = prompt ('Introduce el nmero de vueltas: ', "0");
indice=0;
while ( indice < x ) {
document.write('Vuelta nmero ' + indice + '<br />');
indice++;
}
/* el siguiente bucle se repite hasta que se introduzca un
valor de edad */
Pgina 16/53
Aplicaciones Web
EJEMPLO 16
<html>
<head> <title>Bucles while</title> </head>
<body>
<script type="text/JavaScript" language='JavaScript'>
var Edad;
/*el bucle se repite hasta que se introduzca un valor edad*/
do
Edad = prompt ('Dame tu edad',"");
while ( (Edad == 0) || isNaN(Edad) );
alert ('La edad que me has dado es: ' + Edad);
</script>
</body>
</html>
Pgina 17/53
Aplicaciones Web
0-8
Pgina 18/53
Aplicaciones Web
0-9
1-0
1-1
1-8
1-9
9-9
11. ARRAYS
Podemos comparar un array con una cajonera. En cada cajn de la cajonera podemos meter algo. Despus
podemos recuperarlo accediendo al cajn preciso. Observa el siguiente cdigo:
var producto = new Array( );
producto[0] = "Camisetas";
producto[1] = "Pantalones";
producto[2] = "Camisas";
producto[3] = "Zapatos";
El cdigo anterior podra pertenecer a una pgina de venta de ropa. El mismo cdigo se puede escribir del
siguiente modo:
var producto = ["Camisetas","Pantalones","Camisas","Zapatos"];
El array anterior (producto), tiene una sola dimensin. De modo que para acceder a una posicin, podemos
escribir algo como
Pgina 19/53
Aplicaciones Web
Tambin es posible crear arrays de varias dimensiones (matrices). Por ejemplo, observa el siguiente
cdigo, que utiliza un array de dos dimensiones:
var pdi = [[33,57],[92,88],[266,420],[2216,970]];
for (var i=0;i<4;i++) {
alert("Coordenadas del punto " + i + " son: (" + pdi[i][0] + "," + pdi[i][1] + ")");
}
OPERADOR in
Podemos usar este operador especial para recorrer el contenido de un ndice. Por ejemplo:
var arr = [1,2,3,4,5,6];
for(var i in arr)
document.write(El valor de arr['+i+'] = + arr[i]);
El operador in hace que la variable i tome el valor de los ndices del array.
12. FUNCIONES
Una funcin es un trozo de cdigo que permite desarrollar una tarea concreta y bien definida, que se
encuentra separado del resto de instrucciones del programa y al que se le ha dado un nombre para que,
posteriormente, pueda ser referenciado. A travs del nombre se pueden ejecutar las instrucciones
contenidas en l tantas veces como sea necesario.
El uso de funciones evita la repeticin de cdigo innecesario y da mayor legibilidad al cdigo.
La sintaxis general para la declaracin de una funcin es:
function nombre_funcin (parmetros){
Instrucciones de la funcin;
}
Para ejecutar una funcin utilizamos su nombre con los parntesis.
El uso de funciones es generalizado, se utilizan constantemente. De hecho, muchas estn ya definidas en el
sistema (por ejemplo, eval, parseInt, isNaN, ).
EJEMPLO 19
<html>
<head> <title>funciones</title> </head>
<body>
<script type="text/JavaScript">
<!-function Tabladel3( ){
//declaracin de la funcin
with (document)
{
write ('<table border=1>');
write ('<tr>');
for (i=0; i < 10; i ++)
write ('<td> 3*'+i+'='+3*i+'<\/td>');
write ('<\/tr>');
write ('<\/table>');
/* podemos encontrar el carcter \ para evitar que los
navegadores antiguos se confundan con /t */
Pgina 20/53
Aplicaciones Web
}
}
Tabladel3( );
//-->
</script>
</body>
</html>
En principio, podemos colocar las funciones en cualquier parte de la pgina, siempre entre las etiquetas
SCRIPT. No obstante existe una limitacin a la hora de colocarlas con relacin a los lugares desde donde
se llame. Tenemos dos opciones:
Colocar la funcin en el mismo bloque de script desde el que se la va a llamar. En este caso no
importa colocar la declaracin despus de la llamada, aunque no es recomendable.
Colocar la funcin en otro bloque de script. En este caso es obligatorio que el SCRIPT en el que
se declara la funcin est antes que el SCRIPT en el que se llama a la funcin. En otro caso, dara
error.
Lo ms recomendable es declarar todas las funciones de la pgina en la parte HEAD, para, despus, hacer
las llamadas correspondientes desde la parte BODY.
Las funciones, al ejecutarse, pueden devolver valores con la sentencia return que, a su vez, pueden ser
asignados a variables. De hecho sta es la gran utilidad de las funciones.
EJEMPLO 20
<html>
<head> <title>funciones</title> </head>
<body>
<script type="text/JavaScript" language="JavaScript">
<!-function Mifuncion( ) {
var devolver = prompt("Escribe algo","");
return devolver;
}
var escrito = Mifuncion( );
document.write(escrito);
//-->
</script>
</body>
</html>
Las funciones slo pueden devolver un valor, aunque en su cuerpo puede haber colocados varios return. Una
vez que se ejecuta un return, la funcin termina su ejecucin, aunque tenga ms cdigo debajo.
function multipleReturn( ) {
numero=8;
if ((numero % 2) == 0) return 0;
else return 1;
document.write (este mensaje no se vera nunca);
}
La funcin anterior sera equivalente a la siguiente. Sabras explicar porqu?
function multipleReturn( ) {
numero=8;
Pgina 21/53
Aplicaciones Web
if ((numero % 2) == 0) return 0;
return 1;
document.write (este mensaje no se vera nunca);
}
Las funciones, adems de salida, tambin pueden tener entrada de datos mediante el paso de
parmetros. Los parmetros se utilizan para enviar datos a las funciones. Por ejemplo, una funcin que
suma dos nmeros tendra estos dos nmeros como parmetros de entrada y la suma sera el valor de
salida de la funcin. Los parmetros hay que declararlos en la cabecera de la funcin y, por supuesto, sta
debe ser invocada con el nmero correcto de parmetros que se han declarado. Los parmetros pueden ser
de cualquier tipo de datos.
Los parmetros pueden ser comparados con variables a los que se les asigna un determinado valor en el
momento de la llamada a la funcin.
EJEMPLO 21
<html>
<head>
<title>funciones</title>
<script type="text/JavaScript" language="JavaScript">
<!-function escribirBienvenida(nombre){
document.write ("<h1>Hola " + nombre + "<\/h1>");
}
//-->
</script>
</head>
<body>
<script type="text/JavaScript" language="JavaScript">
<!-escribirBienvenida("Juan Garca");
//-->
</script>
</body>
</html>
Una funcin puede recibir todos los parmetros que consideremos necesario, y debemos tener cuidado en
poner los valores de estos parmetros en el orden correcto a la hora de llamar a la funcin para que los
trate correctamente.
EJEMPLO 22
<html>
<head> <title>funciones</title>
<script type="text/JavaScript" language="JavaScript">
<!-function escribirBienvenida(nombre, color){
document.write ('<font color="' + color + '">');
document.write ("<h1>Hola " + nombre + "</h1>");
document.write ("</font>");
}
//-->
</script>
</head>
<body>
<script type="text/JavaScript" language="JavaScript">
<!--
Pgina 22/53
Aplicaciones Web
escribirBienvenida("Juan
escribirBienvenida("Juan
escribirBienvenida("Juan
escribirBienvenida("Juan
//-->
</script>
</body>
</html>
Garca
Garca
Garca
Garca
en
en
en
en
rojo", "#FF0000");
verde", "#00FF00");
azul", "#0000FF");
amarillo", "yellow");
En JavaScript los parmetros se pasan por valor; es decir, a la funcin se pasan slo los valores, no las
variables. Esto significa que cualquier modificacin que haga la funcin sobre los parmetros de entrada no
tendr efecto fuera de la funcin.
Las variables declaradas con var dentro de las funciones son siempre locales a stas, lo que quiere
decir que no se tendr acceso a sus valores desde fuera de dichas funciones. Si dentro de una funcin se
declaran variables sin var o se usan sin declararlas explicitamente, sern variables globales y vivirn
fuera de la funcin.
EJEMPLO 23
<html>
<head>
<title>funciones</title>
<script type="text/JavaScript" language="JavaScript">
<!-function pasoPorValor(parametro){
parametro=35;
document.write ('Dentro de la funcin, el valor del
parmetro es '+ parametro + '<br />');
}
//-->
</script>
</head>
<body>
<script type="text/JavaScript" language="JavaScript">
<!-var variable=5;
document.write ('El valor de la variable antes de la
funcin es '+ variable + '<br />');
pasoPorValor(variable);
document.write ('El valor de la variable despus de la
funcin es '+ variable + '<br />');
//-->
</script>
</body>
</html>
La salida es:
Pgina 23/53
Aplicaciones Web
EJEMPLO 24
<html>
<head> <title>funciones</title>
<body>
<script type="text/JavaScript">
<!-varglobal1 = 5;
varglobal2 = 8;
</head>
function MuestraContenido(parametro){
var varlocal1 = 3;
document.write('Dentro de funcin, parametro es '+ parametro + '<br />');
document.write('Dentro de funcin, varglobal2 es '+ varglobal2 + '<br />');
document.write('Dentro de funcin, varlocal1 es '+ varlocal1 + '<br />');
}
function Suma(parametro){
var varlocal1 = 2;
document.write('Dentro de funcin,
parametro = parametro + varlocal1;
document.write('Dentro de funcin,
document.write('Dentro de funcin,
document.write('Dentro de funcin,
}
document.write('Fuera de la
document.write('Fuera de la
// La siguiente instruccin
// document.write('Fuera de
MuestraContenido(varglobal1);
Suma(varglobal1);
document.write('Fuera de la funcin, varglobal1 es '+ varglobal1 + '<br />');
//-->
</script>
</body>
</html>
La salida es:
Pgina 24/53
Aplicaciones Web
Las clases se escriben siempre con la primera letra en maysculas y las dems en minscula.
Para crear un objeto de una clase, utilizamos la instruccin new. Por ejemplo, para crear un objeto String,
utilizaremos la siguiente instruccin:
var miObjeto = new String( );
Los objetos tienen asociadas propiedades y mtodos. Las propiedades son caractersticas del objeto, y
los mtodos son funciones asociadas a una clase determinada que reciben valores y devuelven un valor.
Para acceder a ellos, utilizamos el nombre del objeto creado seguido de un punto y el nombre de la
propiedad o mtodo.
miObjeto.length; longitud de la cadena de caracteres miObjeto
miObjeto.charAt(0); mtodo que devuelve el carcter que est en la primera posicin de miObjeto
La nica propiedad que encontramos en esta clase es length, la cual almacena el total de caracteres que
contiene la cadena. Podemos averiguar el total de caracteres que hay en una variable u objeto String con la
instruccin:
a.length
EJEMPLO 25
<html>
<head> <title>Objeto String </title>
<script type="text/JavaScript" language="JavaScript">
function dime_tamano_cadena(cadena) {
alert('el total de caracteres de: "' + cadena + '" es: ' + cadena.length);
}
</script>
</head>
<body>
<script type="text/JavaScript" language="JavaScript">
Pgina 25/53
Aplicaciones Web
charAt(indice) Devuelve el carcter que hay en la posicin indicada por 'indice'. Las posiciones de
un string empiezan en 0
slice(ini, fin) Devuelve la subcadena que hay entre las posiciones ini y fin-1
substr(ini, cuantos) Devuelve una subcadena de 'cuantos' caracteres (a partir del carcter que
est en la posicin 'ini')
substring(ini,fin) Devuelve la subcadena que est entre las posiciones ini y fin-1
toString( ) Este mtodo lo tienen todos los objetos y se usa para convertirlos en cadenas.
Los mtodos menos tiles del objeto String relacionados con las etiquetas HTML son:
big( ) aumenta el tamao de la letra del string. Equivale a usar <big> cadena </big>.
Pgina 26/53
Aplicaciones Web
fontSize(tamao) Pone la fuente al tamao indicado. Como si utilizsemos la etiqueta <font> con el
atributo size.
small( ) Disminuye el tamao de la letra de la cadena. Equivale a usar <small> cadena </small>.
Pgina 27/53
Aplicaciones Web
ceil(x) Devuelve el entero igual o inmediatamente siguiente de un nmero. Por ejemplo, ceil(3)
vale 3, ceil(3.4) es 4.
pow(b,e) Recibe dos nmeros como parmetros y devuelve el primer nmero elevado al segundo
nmero.
random( ) Devuelve un nmero aleatorio entre 0 y 1. Mtodo creado a partir de JavaScript 1.1.
El uso de estas funciones es muy sencillo. Por ejemplo, para generar un nmero aleatorio, utilizamos
var aleatorio = Math.random( );
Pgina 28/53
Aplicaciones Web
Algunos consejos que se deberan seguir a la hora de crear cdigo JavaScript son:
Las funciones deben ser razonablemente pequeas, para, as, poder reutilizarlas con facilidad.
Utilizar nombres de variables y funciones que representen su contenido.
Comentar el cdigo.
Utilizar sangrados para colocar los distintos bloques de cdigo dentro del programa.
Cuando se carga una pgina, el navegador crea una jerarqua de objetos en memoria que sirven para
controlar los distintos elementos de dicha pgina. Cualquier elemento de una pgina se puede controlar de
una manera u otra accediendo a esa jerarqua. Por eso es muy importante conocer bien esta jerarqua para
controlar perfectamente las pginas web.
Por el hecho de cargar una pgina en el navegador (contenga lo que contenga), JavaScript ya tiene
predefinidos la siguiente lista de objetos:
window: es el objeto ms alto en la jerarqua de objetos. Contiene las propiedades y mtodos que
se aplican a la ventana entera. A travs de este objeto podemos controlar el aspecto de la ventana,
la barra de estado, abrir ventanas secundarias, Adems, este objeto da acceso a otros objetos
como el documento (la pgina web que estamos visualizando), el historial de pginas web visitadas o
Pgina 29/53
Aplicaciones Web
los distintos frames de la ventana. De modo que para acceder a cualquier otro objeto de la
jerarqua, deberamos empezar por el objeto window. Por este motivo, JavaScript entiende que
todos los objetos comienzan en este objeto aunque no lo indiquemos. Por ejemplo, las siguientes
instrucciones son equivalentes: document.write( ); window.document.write( );.
o
location: contiene las propiedades del URL actual (protocolo, servidor, puerto, etc).
history: en este objeto se almacenan los distintos enlaces que se han visitado (solamente
para la sesin actual, no es un histrico del tipo 'desde que instal el navegador').
document: contiene todas las propiedades del contenido de la pgina que se est
visualizando (color de fondo, imgenes, ttulo, formularios, etc).
screen: en este objeto se almacenan las propiedades del monitor del usuario (resolucin, colores).
Es decir, los elementos HTML definidos en el documento HTML sern accesibles desde JavaScript en
forma de objetos. As, todos los elementos tales como imgenes, elementos de formulario, tablas,
prrafos, etc, son objetos DOM. Slo hay que identificar a cada elemento, esto es, darle un nombre, para
poder acceder directamente a ellos y manipularlos desde JavaScript.
* window
+ history
+ location
+ document
- anchor
-->
- form
. checkbox
. text
. submit
- image
+ frame
* navigator
* screen
Pgina 30/53
Aplicaciones Web
Objeto JavaScript
document
Propiedades
document.bgColor
document.lastModifed
Mtodos
document.open(
document.write(
document.close( )
--
<img src='fich.gif'
name='una_img'
border='1'
width='50'>
<form name='mi_f'
method='get'
action='cgi.php'>
</form>
<form name='f2'>
<input type='text'
name='caja'> </form>
document.una_img
document.una_img.src
document.una_img.border
document.una_img.width
document.mi_f
document.mi_f.method
document.mi_f.action
document.mi_f.submit(
document.mi_f.reset( )
document.f2.caja
document.f2.caja.value
document.f2.caja.size
document.f2.caja.focus(
)
document.f2.caja.select(
)
)
)
El DOM permite acceder y manipular elementos de un documento pero, por s mismo no es interactivo. Para
ello, debemos conocer los eventos que pudieran influenciar a un objeto, asignarles el manejador del evento
y definir las acciones a ejecutar ante la ocurrencia de esos eventos.
EJEMPLO 29 (ejemplo de eventos)
<html>
<head> <title>setinterval</title>
<script type="text/JavaScript">
function incrementa( ) {
document.toro.width=100;
}
function retorna( ) {
document.toro.width=70;
}
</script>
</head>
<body>
<img src='imagenes/toro.gif' name='toro' width='70'
onmouseover='incrementa( )' onmouseout='retorna( )'>
</body>
</html>
Pgina 31/53
Aplicaciones Web
A continuacin podemos ver las propiedades del objeto window. Hay algunas muy tiles y otras que lo son
menos:
defaultStatus Texto que se escribe por defecto en la barra de estado del navegador.
innerHeight Tamao en pxeles del espacio donde se visualiza la pgina, en vertical. (JavaScript
1.2)
innerWidth Tamao en pxeles del espacio donde se visualiza la pgina, en horizontal. (JavaScript
1.2)
location La URL del documento que se est visualizando. Podemos cambiar el valor de esta
propiedad para movernos a otra pgina.
outherHeight Tamao en pxeles del espacio de toda la ventana, en vertical. Esto incluye las barras
de desplazamiento, botones, etc.
outherWidth Tamao en pxeles del espacio de toda la ventana, en horizontal. Esto incluye las
barras de desplazamiento.
top Hace referencia a la ventana donde est situada el frame donde estamos trabajando.
Pgina 32/53
Aplicaciones Web
</html>
En Firefox 9, por defecto, no se instala la barra de estado. Para instalarla, hay que activar un
complemento similar a status-4-evar. Una vez instalada, por defecto, no se puede escribir en la barra de
estado. INVESTIGA SI ESTO SE PUEDE CONSEGUIR DE ALGUNA MANERA.
Vamos a ver ahora los distintos mtodos que tiene el objeto window:
alert ( texto ) Presenta una ventana de alerta donde se puede leer el texto que recibe por
parmetro.
back( ) Ir una pgina atrs en el historial de pginas visitadas. Funciona como el botn de volver de
la barra de herramientas.
forward( ) Ir una pgina adelante en el historial de pginas visitadas. Como si pulssemos el botn
de adelante del navegador.
moveBy ( pixelsX, pixelsY ) Mueve la ventana del navegador los pxeles que se indican por
parmetro hacia la derecha y abajo.
moveTo ( pixelsX, pixelsY ) Mueve la ventana del navegador a la posicin indicada en las
coordenadas que recibe por parmetro.
releaseEvents ( eventos ) Deja de capturar eventos del tipo que se indique por parmetro.
resizeTo ( pixelsAncho, pixelsAlto ) Redimensiona la ventana del navegador para que ocupe el
espacio en pxeles que se indica por parmetro.
scrollBy ( pixelsX, pixelsY ) Hace un scroll del contenido de la ventana relativo a la posicin
actual.
Pgina 33/53
Aplicaciones Web
scrollTo ( pixelsX, pixelsY ) Hace un scroll de la ventana a la posicin indicada por el parmetro.
Este mtodo se tiene que utilizar en lugar de scroll.
setInterval( ) Define un script para que sea ejecutado indefinidamente en cada intervalo de
tiempo.
setTimeout ( sentencia, milisegundos ) Define un script para que sea ejecutado una vez despus
de un tiempo de espera determinado.
Area Una etiqueta <AREA>, de las que estn vinculadas a los mapas de imgenes. Se accede por su
nombre.
Pgina 34/53
Aplicaciones Web
fgColor El color del texto. Para ver los cambios hay que reescribir la pgina.
EJEMPLO 32
<html>
<head>
<title>Cambio de color</title>
<script type="text/JavaScript" language="JavaScript">
function cambiaTitulo(texto){
document.title = texto;
}
function cambiaColor(colorin){
document.bgColor = colorin;
}
</script>
</head>
<body>
<form action="#">
<input type="Button" value="Rojo"
onclick="cambiaColor('ff0000')">
<input type="Button" value="Verde"
onclick="cambiaColor('00ff00')">
<input type="Button" value="Azul"
onclick="cambiaColor('0000ff')"> <br /> <br /> <br />
<input type="Button" value="Titulo = Hola a todos"
onclick="cambiaTitulo('Hola a todos')">
<input type="Button" value="Titulo = Bienvenidos a mi pgina web"
onclick="cambiaTitulo('Bienvenidos a mi pgina web')">
<input type="Button" value="Titulo = Ms dias que longanizas"
onclick="cambiaTitulo('Ms dias que longanizas')">
</form>
</body>
</html>
El objeto document, localizado debajo del objeto window en la jerarqua de objetos de JavaScript,
tambin tiene una lista de mtodos interesantes. La vemos a continuacin:
captureEvents( ) Para capturar los eventos que ocurran en la pgina web. Recibe como parmetro
el evento que se desea capturar.
Pgina 35/53
Aplicaciones Web
contextual( ) Ofrece una lnea de control de los estilos de la pgina. En el caso que deseemos
especificarlos con JavaScript.
getSelection( ) Devuelve un string que contiene el texto que se ha seleccionado. Slo funciona en
Netscape.
releaseEvents( ) Liberar los eventos capturados del tipo que se especifique, envindolos a los
objetos siguientes en la jerarqua.
write( ) Escribe dentro de la pgina web. Podemos escribir etiquetas HTML y texto normal.
writeln( ) Escribe igual que el mtodo write( ), aunque coloca un salto de lnea al final.
EJEMPLO 33
<html>
<head>
<title>Rescatar lo seleccionado</title>
<script type="text/JavaScript" language="JavaScript">
function mostrarSeleccionado( ){
alert("Has seleccionado:\n" + document.getSelection( ))
}
</script>
</head>
<body>
<h1>Rescatar lo seleccionado</h1><br />
<form action="#">
<input type="button" value="pulsame!"
onClick="mostrarSeleccionado( )">
</form>
Selecciona cualquier texto de la pgina y pulsa sobre el botn.
</body>
</html>
Una de las cosas a tener en cuenta con JavaScript es que cuando el navegador lee una pgina web, la va
interpretando y escribiendo en su ventana. El proceso en el que el navegador est escribiendo la pgina se
llama flujo de escritura del documento. El flujo comienza cuando se empieza a escribir la pgina y dura
hasta que sta ha terminado de escribirse. Una vez terminada la escritura de la pgina, el flujo de
escritura del documento se cierra automticamente y la carga de la pgina termina. Esto significa que,
cuando se cierra el flujo, no se puede escribir en la pgina. Sin embargo, hay dos formas de ejecutar
cdigo JavaScript:
ejecucin mientras se carga la pgina. Aqu los document.write se pueden ejecutar sin problema.
Ejecucin cuando la pgina se ha cargado como respuesta a un evento. En este caso, si ejecutamos
un document.write lo que ocurre es que se vuelve a cargar la pgina completa, con lo que se vuelve a
abrir el flujo de escritura del documento.
Los mtodos open( ) y close( ) DEL OBJETO DOCUMENT SIRVEN PARA CONTROLAR EL FLUJO DEL
DOCUMENTO DESDE JavaScript. Nos permiten abrir y cerrar el documento explcitamente, por lo que,
Pgina 36/53
Aplicaciones Web
cuando se va a escribir en la pgina como respuesta a un evento, el cdigo correcto sera el siguiente
(aunque no se suele hacer as):
document.open( );
window.document.write(Hola);
document.close( );
</form>
Pgina 37/53
Aplicaciones Web
Todos los ejemplos que aparecen en este apartado estn hechos sin el uso de id. Es recomendable que se
rehagan los ejemplos con el uso de id de los mtodos asociados.
El formulario tambin tiene asociados dos mtodos: submit( ) y reset( ), para enviar el formulario y para
borrar el contenido de todos los campos respectivamente. Para utilizarlos escribiramos:
document.miForm.submit( );
document.miForm.reset( );
Un ejemplo de uso de estos mtodos sera el siguiente:
function validaSubmite( ){
if (document.miFormulario.campo1.value == "")
alert("Debe rellenar el formulario")
else
document.miFormulario.submit( );
}
<form name="miFormulario"
action="mailto:correo@correo.com" enctype="text/plain">
<input type="Text" name="campo1" value="" size="12">
<input type="button" value="Enviar" onclick="validaSubmite( )">
</form>
Pgina 38/53
Aplicaciones Web
<form name="miFormulario"
action="mailto:promocion@guiarte.com" enctype="text/plain">
<input type="Text" name="campo1" value="" size="25">
<input type="Reset" value="Reset"> <br /><br />
<input type="button"
value="Cambia el valor por defecto del campo"
onclick="cambiaDefecto( )"> <br /><br />
<input type="Text" name="campo2"
value="Campo para enfocar" size="32">
<input type="button"
value="Cambia el foco al otro cuadro"
onclick="seleccionaFoco( )"> <br /><br />
<input type="button"
value="Quita el foco del segundo cuadro y lo lleva al
primer cuadro" onclick="quitaFoco( )">
</form>
</body>
</html>
OBJETOS PASSWORD Y HIDDEN. Su manejo con JavaScript es igual al manejo explicado para los
objetos Text, salvo que las propiedades que tienen son value y name.
OBJETO RADIO. Un radio se referencia como si fuera un casillero (vector o array) formado por una
fila dividida en casillas numeradas a partir de 0. Para hacer referencia a cada uno de los valores
(casillas) se utilizan los corchetes que tendrn el valor de posicin en su interior. Las propiedades del
objeto Radio son las siguientes:
o checked Indica si est seleccionado o no un botn de radio. Para preguntar si una opcin est
marcada o no utilizamos la expresin (document.miForm.miCampo[i].checked == true)
o defaultChecked Opcin marcada por defecto.
o value El valor del campo de radio, asignado por la propiedad value del radio. El acceso a cada
uno de los valores del radio se hace teniendo en cuenta que el radio, realmente, es un casillero
(vector o array): document.miForm.miCampo[i].value
o length Nmero de opciones del radio (tamao del radio). document.miForm.miCampo.length
Pgina 39/53
Aplicaciones Web
alert(document.fopciones.opciones[i].value);
}
</script>
</head>
<body>
<form name=fopciones action=#>
<input type="Radio" name="opciones" value="valor 1" checked> Opcin 1<br />
<input type="Radio" name="opciones" value="valor 2"> Opcin 2<br />
<input type="Radio" name="opciones" value="valor 3"> Opcin 3<br />
<input type="Radio" name="opciones" value="valor 4"> Opcin 4<br />
<input type="Radio" name="opciones" value="valor 5"> Opcin 5<br /> <br />
<input type="Button" name="boton" value="Opcin pulsada"
onclick="opcionPulsada( )">
</form>
</body>
</html>
OBJETO CHECKBOX. Una casilla de verificacin est formada por varias opciones que se pueden
marcar indistintamente. Es conveniente que cada opcin del checkbox tenga un nombre (name)
diferente, para as poder comprobar qu opciones estn marcadas.
Las propiedades de este objeto son:
o checked Informa sobre el estado del checkbox. Puede ser true o false. Para preguntar si la
casilla est marcada: (document.miForm.miCampo.checked == true)
o defaultChecked Si est chequeada por defecto o no.
o value El valor actual del checkbox. document.miForm.miCampo.value
Los mtodos de este objeto son:
o click( ) Es como si hicisemos un click sobre el checkbox, es decir, cambia el estado del
checkbox.
o blur( ) Retira el foco del checkbox.
o focus( ) Coloca el foco en el checkbox.
EJEMPLO 36
<html>
<head>
<title>Ejemplo Checkbox</title>
<script type="text/JavaScript" language="JavaScript">
function alertaChecked( ){
alert(document.miFormulario.miCheck.checked)
}
function alertaValue( ){
alert(document.miFormulario.miCheck.value)
}
function metodoClick( ){
document.miFormulario.miCheck.click( )
}
</script>
</head>
<body>
<form name="miFormulario" action="mailto:promocion@guiarte.com"
enctype="text/plain">
<input type="checkbox" name="miCheck"> <br /> <br />
<input type="button" value="informa de su propiedad checked"
onclick="alertaChecked( )">
<input type="button" value="informa de su propiedad value"
onclick="alertaValue( )"> <br /> <br />
<input type="button" value="Simula un click" onclick="metodoClick( )">
Pgina 40/53
Aplicaciones Web
</form>
</body>
</html>
OBJETO SELECT. Se trata igual que el RADIO, como un array (casillero). Sus propiedades son:
o length Guarda la cantidad de opciones del campo select. Cantidad de etiquetas <OPTION>
o selectedIndex Es el ndice de la opcin que se encuentra seleccionada:
i = document.miForm.miCampo.selectedIndex
o
options Es un vector que se utiliza para acceder a cada una de las opciones del select. Las
opciones de select estn dentro del vector document.miForm.miCampo.options[i]. Cada una de
las casillas de este vector tienen, a su vez, propiedades:
defaultSelected Indica con un true o un false si esa opcin es la opcin por defecto. La
opcin por defecto se consigue con HTML colocando el atributo selected a un option.
index La posicin de esa opcin dentro del select.
selected Indica si esa opcin se encuentra seleccionada o no.
text Es el texto de la opcin. Lo que puede ver el usuario en el select, que se escribe
despus de la etiqueta <OPTION> en HTML.
value Indica el valor de la opcin, que se introduce con el atributo VALUE de la
etiqueta <OPTION> en HTML.
Pgina 41/53
Aplicaciones Web
Pgina 42/53
Aplicaciones Web
20. EVENTOS
Los eventos son sucesos que tienen lugar a lo largo de la interpretacin del cdigo que compone el
documento, ya est formado solamente por HTML o por HTML y JavaScript. Evidentemente, no se puede
detectar "todo" lo que ocurre con la pgina que se ha diseado/programado, pero s que existen una serie
de acciones ante cuya existencia, el navegador reacciona y pone a nuestro alcance una serie de palabras
reservadas para poder ejecutar cdigo. A estas palabras reservadas se las denomina manejadores de
eventos. Cada manejador est destinado a la deteccin y tratamiento de un determinado evento.
Para utilizar un manejador de eventos que detecte el evento que se desea, basta con escribir dicho
manejador en la etiqueta HTML correspondiente al objeto sobre el que se desea detectar el evento y
despus del smbolo = y el cdigo JavaScript que se desea ejecutar en las ocasiones en que se produzca el
evento (este cdigo debe aparecer entre comillas). Evidentemente, si este cdigo est compuesto por
muchas instrucciones, conviene siempre que se defina una funcin que se componga de esas instrucciones y
que el cdigo que aparece en la etiqueta HTML sea solamente la referencia a la funcin. Es importantsimo
recordar que el manejador del evento se escribe en la etiqueta HTML del elemento sobre el que se desea
detectar el evento. As si se desea detectar una pulsacin sobre un botn, el manejador onClick aparecer
en la etiqueta HTML del botn o si se desea detectar que se descarga un documento, el manejador ir en
la etiqueta del cuerpo del documento (body):
<input type=button value=plsame onclick=sentencias en JavaScript;>
Se puede poner ms de un manejador en un mismo elemento.
En el cdigo asociado a los manejadores de eventos es aconsejable especificar toda la jerarqua de los
objetos del navegador, empezando desde el objeto window, ya que hay algn navegador antiguo que no
sobreentiende este objeto. As por ejemplo, en vez de utilizar alert( ); tendremos que escribir
window.alert( ); o en vez de escribir document.write( ); escribiremos window.document.write( );
onclick
EJEMPLO 38
<html>
<head><title>Eventos</title></head>
<body>
<center>
Cada vez que se pulse el botn, se ejecuta la instruccin
<form name='datos' action=''>
<input type='button' value='Pulsa' onclick="alert('Has pulsado')">
</form>
</center>
</body>
</html>
Pgina 43/53
Aplicaciones Web
ondblclick
onmousedown
onmouseup
Pgina 44/53
Aplicaciones Web
onmouseover
Se dispara cuando el puntero del ratn pasa por encima del objeto sobre
el que se define el evento.
EJEMPLO 42
<html>
<head><title>Eventos</title></head>
<body>
<script type=text/JavaScript >
<!-function Cambia( ){
document.miimagen.src = "imagenes/obras2.gif";
return true; //No es necesario el return
}
//-->
</script>
<center><font size=+2> Pantalla de cambio de
imagen</font>
<br /> <br />
<Img name="miimagen" src="imagenes/obras.gif"
width=75 height=100 onmouseover='Cambia( )'>
<br /> <br /></center>
</body>
</html>
La imagen cambia de aspecto cuando se dispara el evento, que es cuando el usuario pasa el ratn por
encima (onmouseover) de dicha imagen. Si desea que se vuelva a cambiar deber recargar el ejemplo (F5 o
Ctrl-R).
onmouseout
Ejercicio
Modifique el ejemplo anterior para que al salir el ratn de encima de la
imagen, se ejecute una funcin que vuelva a situar la imagen original a la
vista.
Importante: Se pueden poner ms de un manejador en un elemento, de tal
manera que se puede indicar en la etiqueta img tanto el manejador
onmouseover como el onmouseout, y cada uno de ellos puede llamar a una
funcin diferente.
Pgina 45/53
Aplicaciones Web
onselect
onkeydown
onkeypress
Pgina 46/53
Aplicaciones Web
onkeyup
onblur
Introduzca el cursor en el campo de texto que aparece en el ejemplo, introduzca un nmero y pulse con el
puntero del ratn fuera del campo (o sea, saque el cursor del campo). En ese momento se ejecutar el
cdigo asociado al manejador. Este manejador de evento est especialmente indicado para comprobaciones
posteriores a la entrada de datos en un campo. Observe que en este ejemplo, adems, se utiliza un mtodo
denominado focus( ) que tienen todos los elementos de un formulario y que permite atraer hacia el objeto
en cuestin el foco (o sea, el cursor). En el ejemplo, esto ocurre cuando el nmero es mayor de un
determinado valor. Por problemas con los nuevos navegadores, los eventos onblur( ) y onfocus( ) no
funcionan bien cuando se combinan.
Pgina 47/53
Aplicaciones Web
onfocus
Introduzca el cursor en el campo de texto que aparece en el ejemplo y comprobar que nada ms entrar, el
cdigo del manejador de eventos se ejecuta. No se debe confundir este manejador de evento con el
mtodo focus( ) presentado en el ejemplo anterior.
onreset
Pgina 48/53
Aplicaciones Web
Adems, debe aparecer un doble return: uno en la funcin y otro en el cdigo asociado al evento, ya
que el del evento es realmente el que aborta el proceso.
Pruebe el ejemplo introduciendo algn valor en el campo de texto y solicitando que se borre. Experimente
con las dos opciones disponibles.
onsubmit
Este evento se dispara en el momento en que el usuario pulsa un botn tipo submit
dentro de un formulario.
La necesidad de un "doble return" aparece de igual manera que en el caso de onreset.
Sin este "doble return" (por supuesto, si no se llama a una funcin, no es doble), los
datos del formulario se enviaran siempre. Observe que en este ejemplo se han usado
dos manejadores de eventos para un mismo elemento form. En caso del envo, este no
se producir si no se ha metido ningn dato en el campo nombre. Esto se debe a que el
evento salta al pulsar el botn y antes de que se produzca el envo, lo que nos permite
hacer comprobaciones en ese intervalo.
EJEMPLO 50
<html>
<head><title>Eventos</title></head>
<body>
<script type=text/JavaScript type="text/JavaScript">
function Avisa( ){
var acepta = confirm ('Atencin: se van a limpiar los datos del
formulario');
if (acepta)
return true;
else
return false;
}
function Comprueba( ){
if (document.miform.nombre.value == ""){
alert ('No ha metido ningn dato');
document.miform.nombre.focus( );
return false;
}
else
return true;
}
</script>
<center><br /><hr /><br />
El evento se dispara cuando se pulse el botn de 'Enviar'
<form name='miform' onreset="return Avisa( )" onsubmit="return
Comprueba( )"action=''>
Nombre: <input type='text' name='nombre' size='10'><br /><br />
<input type='reset' value='Limpiar'>
<input type='submit' value='Enviar'>
</form>
<br /><hr /><br /></center>
</body>
</html>
Pgina 49/53
Aplicaciones Web
onload
Este evento se dispara cuando se terminan de cargar todos los elementos de una
pgina. Es muy interesante para asegurarse de que el cdigo no emita ningn error
por haber intentado acceder a un elemento que todava no existe (puede ocurrir si
se ejecuta JavaScript antes de la definicin de parte del HTML).
El siguiente cdigo no rellena el campo que se le solicita ya que se pretende ejecutar
una lnea de cdigo JavaScript cuando todava no ha sido definido el elemento al que
intenta acceder: el elemento document.miform.nombre.value no existe cuando se
intenta acceder a l y por tanto, no se rellena con el valor 'Santiago'.
EJEMPLO 51
<html>
<head><title>Eventos</title></head>
<body>
<script type=text/JavaScript>
document.miform.nombre.value='Santiago';
</script>
<center><br /><hr /><br />
<form name='miform' action=''>
Nombre:<input type='text' name='nombre' size='10'><br /><br />
<input type='reset' value='Limpiar'>
<input type='submit' value='Enviar'>
</form>
<br /><hr /><br /></center>
</body>
</html>
Usando el evento onload, nos garantizamos la existencia de todos los elementos de la pgina ya que se
dispara cuando todos ellos han sido cargados:
Nota:
al pulsar en
un botn tipo
"submit",
despus del
"envo", se
produce una
recarga de la
pgina, por
lo que vuelve
a aparecer el
valor que se
introduce en
el campo.
onunload
<html>
<head><title>Eventos</title></head>
<body onload = "document.miform.nombre.value='Santiago'">
<center><br /><hr /><br />
<form name='miform' action=''>
Nombre: <input type='text' name='nombre' size='10'><br /><br
/>
<input type='reset' value='Limpiar'>
<input type='submit' value='Enviar'>
</form>
<br /><hr /><br /></center>
</body>
</html>
Pgina 50/53
Aplicaciones Web
onchange
ondragdrop Se produce cuando un usuario suelta algo que ha estado arrastrando por la pgina.
onerror
onmove
onresize
Descripcin
setInterval(Nombrefuncin,
miliseg)
Este mtodo solicita que se ejecute la funcin que se le pasa como primer
parmetro cada tantos milisegundos como se le pasa en el segundo
parmetro. Por tanto, establece un intervalo de n milisegundos y en cada
ciclo ejecuta. Este mtodo devuelve un identificador de proceso que se
puede usar para detener la funcin pasada. clearInterval (pid) Este mtodo
detiene la ejecucin del intervalo establecido con el mtodo anterior.
Necesita como parmetro el identificador de proceso devuelto por
setInterval
Pgina 51/53
Aplicaciones Web
setTimeout(Nombrefuncin,
miliseg)
clearTimeout (pid)
Veamos un ejemplo de utilizacin de setInterval. La idea bsica es la existencia de una imagen cuyas
propiedades vamos a cambiar poco a poco. El efecto que se desea conseguir es el de una imagen cuyo
tamao crece continuadamente mientras situemos el cursor encima de ella y vuelve a tener su tamao
original cuando situamos el cursor del ratn en cualquier otro punto de la pantalla. Para ello usamos los
eventos onmouseover y onmouseout, de tal manera que cuando se dispare el primero, debemos hacer que el
tamao crezca, mientras que cuando se dispare el segundo, debemos restaurar la imagen al tamao original.
EJEMPLO 54
<html>
<head>
<title>setinterval</title>
<script type="text/JavaScript">
var ancho=0;
var alto =0;
var intervalo;
function guarda_dimensiones( ) {
ancho=document.imagen.width;
alto=document.imagen.height;
}
function crece( ) {
intervalo=setInterval('incrementa( )', 300);
}
function incrementa( ) {
document.imagen.width += 5;
document.imagen.height += 5;
}
function restablece( ) {
clearInterval(intervalo);
document.imagen.width=ancho;
document.imagen.height=alto;
}
</script>
</head>
<body onload='guarda_dimensiones( )'>
<img src='imagenes/toro.gif' name='imagen' onmouseover='crece( )'
onmouseout='restablece( )'>
</body>
</html>
toro.gif
Pgina 52/53
Aplicaciones Web
22. BIBLIOGRAFA
Pgina 53/53