Javascript
Javascript
Tipos de datos Declaracin de variables Operadores aritmticos Funciones y objetos Arrays asociativos Eventos en JavaScript Creacin de formularios interactivos
JavaScript
Es un lenguaje de scripts desarrollado por Netscape para incrementar las funcionalidades del lenguaje HTML. Es un lenguaje interpretado, es decir, no require compilacin. El navegador del usuario se encarga de interpretar las sentencias JavaScript contenidas en una pgina HTML y ejecutarlas adecuadamente. Es un lenguaje orientado a eventos. Cuando un usuario pincha sobre un enlace o mueve el puntero sobre una imagen se produce un evento.
JavaScript es un lenguaje orientado a objetos. El modelo de objetos de JavaScript est reducido y simplificado, pero incluye los elementos necesarios para que los scripts puedan acceder a la informacin de una pgina y puedan actuar sobre la interfaz del navegador.
<HTML> <HEAD> <TITLE>Introduccin a JavaScript</TITLE> <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> <!-function saludo() { window.alert('Bienvenido a JavaScript!') } //--> </SCRIPT> </HEAD> <BODY onLoad="saludo()"> </BODY> </HTML>
<HTML> <HEAD> <TITLE>Tutorial de JavaScript</TITLE> <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript" SRC="codigo.js"></SCRIPT> </HEAD> <BODY> </BODY> </HTML>
Comentarios en JavaScript
// comentario de una lnea /* comentario de varias lneas */
Los bloques de cdigo que integran una unidad son encerrados entre los caracteres { y } (por ejemplo, el cdigo de una funcin, o las sentencias incluidas dentro de un bucle). Por otra parte, JavaScript hace diferencia entre maysculas y minsculas para los nombres de variables y funciones.
<HEAD> <TITLE>Ejemplo 2.1: escritura de cadenas de texto</TITLE> </HEAD> <BODY> <SCRIPT LANGUAGE="JavaScript"> <!-document.write('<IMG SRC="imagen.gif">') document.write("<BR><H1>Bienvenido a JavaScript</H1>") //--> </SCRIPT> </BODY> </HTML>
El mtodo prompt() del objeto window muestra una caja de texto en la que el usuario puede introducir contenidos. Tambin muestra dos botones, Aceptar y Cancelar.
prompt("Su color favorito es: ","Azul")
El segundo parmetro es el valor predeterminado para la caja de texto, que el usuario podr modificar.
Por ejemplo, podemos pedirle al usuario que introduzca su nombre, y despues mostrarlo:
<HTML> <HEAD> <TITLE>Ejemplo 2.2: pgina que pide el nombre</TITLE> </HEAD> <BODY> <SCRIPT LANGUAGE="JavaScript"> <!-var nombre = prompt("Introduzca su nombre:","") document.write("<H2>Bienvendio, " + nombre + "</H2>") //--> </SCRIPT> <P>Aqu va el resto de la pgina...</P> </BODY> </HTML>
Finalmente, para pedir al usuario confirmacin en la realizacin de una accin podemos usar el mtodo confirm() del objeto window. Este mtodo mostrar un cuadro de dilogo con el mensaje de texto que le pasemos como parmetro, y dos botones, Aceptar y Cancelar: confirm("Desea volver al inicio de la pgina?") Este mtodo devuelve verdadero (true) si se pulsa Aceptar y falso (false) si se pulsa Cancelar.
<HTML> <HEAD> <TITLE>Ejemplo 2.3: pgina que pide confirmacin</TITLE> </HEAD> <BODY> <H1>Pgina sobre sellos</H1> <SCRIPT LANGUAGE="JavaScript"> <!-var entrar = confirm("De verdad desea entrar en esta\npagina?") if ( !entrar ) self.close() //--> </SCRIPT> <P>Aqu va el resto de la pgina...</P> </BODY> </HTML>
Tipos de datos
En JavaScript un dato puede ser de uno de los siguientes tipos: Nmero : Cualquier nmero, como 12, 22.5 o 2e8 Cadena : "Hola" u 'Hola' Booleano : Verdadero (true) o falso (false) Objeto : Ver Captulo 4: Funciones y objetos Funcin NULL Palabra clave para indicar ningn valor
Los nmeros enteros pueden encontrarse en diferentes bases: Decimal (base 10): cualquier entero que no empiece por 0 estar representado en base 10. Octal (base 8): si el entero se escribe empezando con el dgito 0, estar en base 8. Hexadecimal (base 16): para indicar nmero en hexadecimal, hay que anteponerlo con 0x o 0X (por ejemplo 0x1A). En JavaScript, la cadena vaca "" es diferente de null.
VARIABLES
Concepto de variable 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. Los nombres de las variables han de construirse con caracteres alfanumricos y el carcter subrayado (_). Aparte de esta, hay una serie de reglas adicionales para construir nombres para variables. La ms importante es que tienen que comenzar por un carcter alfabtico o el subrayado.
El mbito de las variables en Javascript: qu son las variables locales y globales y cmo se trabaja con ellas en Javascript.
Concepto de mbito de variables Se le llama mbito de las variables al lugar donde estas estn disponibles. Por lo general, cuando declaramos una variable hacemos que est disponible en el lugar donde se ha declarado, esto ocurre en todos los lenguajes de programacin y como Javascript se define dentro de una pgina web, las variables que declaremos en la pgina estarn accesibles dentro de ella. La propia pgina donde se define es el mbito ms habitual de una variable y le llamaremos a este tipo de variables globales a la pgina. Para declarar una variable global a la pgina simplemente lo haremos en un script, con la palabra var. <SCRIPT> var variableGlobal </SCRIPT>
Variables locales
Tambin podremos declarar variables en lugares ms acotados, como por ejemplo una funcin. A estas variables les llamaremos locales. Cuando se declaren variables locales slo podremos acceder a ellas dentro del lugar donde se ha declarado, es decir, si la habamos declarado en una funcin solo podremos acceder a ella cuando estemos en esa funcin. Las variables pueden ser locales a una funcin, pero tambin pueden ser locales a otros mbitos, como por ejemplo un bucle. En general, son mbitos locales cualquier lugar acotado por llaves. <SCRIPT> function miFuncion (){ var variableLocal } </SCRIPT>
No hay problema en declarar una variable local con el mismo nombre que una global, en este caso la variable global ser visible desde toda la pgina, excepto en el mbito donde est declarada la variable local ya que en este sitio ese nombre de variable est ocupado por la local y es ella quien tiene validez. <SCRIPT> var numero = 2 function miFuncion (){ var numero = 19 document.write(numero) //imprime 19 } document.write(numero) //imprime 2 </SCRIPT>
<SCRIPT> var numero = 2 function miFuncion (){ numero = 19 document.write(numero) //imprime 19 } document.write(numero) //imprime 2 //llamamos a la funcin miFuncion() document.write(numero) //imprime 19 </SCRIPT> la variable numero de la funcion ser la misma variable global numero declarada fuera de la funcin.
Tipo boleano El tipo bolean, boolean en ingls, sirve para guardar un si o un no o dicho de otro modo, un verdadero o un falso. Se utiliza para realizar operaciones lgicas, generalmente para realizar acciones si el contenido de una variable es verdadero o falso. Si una variable es verdadero entonces no Ejecuto otras Ejecuto unas instrucciones Si
Los dos valores que pueden tener las variables boleanas son true o false.
miTexto = "Pepe se va a pescar" miTexto = '23%%$ Letras & *--*' Todo lo que se coloca entre comillas, como en los ejemplos anteriores es tratado como una cadena de caracteres independientemente de lo que coloquemos en el interior de las comillas.
Operadores aritmticos
+ Suma de dos valores - Resta de dos valores, tambin puede utilizarse para cambiar el signo de un nmero si lo utilizamos con un solo operando -23 * Multiplicacin de dos valores / Divisin de dos valores % El resto de la divisin de dos nmeros (3%2 devolvera 1, el resto de dividir 3 entre 2) ++ Incremento en una unidad, se utiliza con un solo operando -- Decremento en una unidad, utilizado con un solo operando Ejemplos precio = 128 //introduzco un 128 en la variable precio unidades = 10 //otra asignacin, luego veremos operadores de asignacin factura = precio * unidades //multiplico precio por unidades, obtengo el valor factura resto = factura % 3 //obtengo el resto de dividir la variable factura por 3 precio++ //incrementa en una unidad el precio (ahora vale 129)
Operadores de asignacin = Asignacin. Asigna la parte de la derecha del igual a la parte de la izquierda. A al derecha se colocan los valores finales y a la izquierda generalmente se coloca una variable donde queremos guardar el dato. += Asignacin con suma. Realiza la suma de la parte de la derecha con la de la izquierda y guarda el resultado en la parte de la izquierda. -= Asignacin con resta *= Asignacin de la multiplicacin /= Asignacin de la divisin %= Se obtiene el resto y se asigna Ejemplos ahorros = 7000 //asigna un 7000 a la variable ahorros ahorros += 3500 //incrementa en 3500 la variable ahorros, ahora vale 10500 ahorros /= 2 //divide entre 2 mis ahorros, ahora quedan 5250
Operadores de cadenas
+ Concatena dos cadenas, pega la segunda cadena a continuacin de la primera. Ejemplo cadena1 = "hola" cadena2 = "mundo" cadenaConcatenada = cadena1 + cadena2 //cadena concatenada vale "holamundo" miNumero = 23 miCadena1 = "pepe" miCadena2 = "456" resultado1 = miNumero + miCadena1 //resultado1 vale "23pepe" resultado2 = miNumero + miCadena2 //resultado2 vale "23456" miCadena2 += miNumero //miCadena2 ahora vale "45623"
Operadores lgicos
! Operador NO o negacin. Si era true pasa a false y viceversa. && Operador Y, si son los dos verdaderos vale verdadero. || Operador O, vale verdadero si por lo menos uno de ellos es verdadero. Ejemplo miBoleano = true miBoleano = !miBoleano //miBoleano ahora vale false tengoHambre = true tengoComida = true comoComida = tengoHambre && tengoComida
Operadores condicionales
== Comprueba si dos valores son iguales != Comprueba si dos valores son distintos > Mayor que, devuelve true si el primer operando es mayor que el segundo < Menor que, es true cuando el elemento de la izquierda es menor que el de la derecha >= Mayor igual <= Menor igual
& Y de bits ^ Xor de bits | O de bits << >> >>> >>>= >>= <<= Varias clases de cambios
el operador typeof, que devuelve una cadena de texto que describe el tipo del operador que estamos comprobando.
var boleano = true var numerico = 22 var numerico_flotante = 13.56 var texto = "mi texto" var fecha = new Date() document.write("<br>El tipo de boleano es: " + typeof boleano) document.write("<br>El tipo de numerico es: " + typeof numerico) document.write("<br>El tipo de numerico_flotante es: " + typeof numerico_flotante) document.write("<br>El tipo de texto es: " + typeof texto) document.write("<br>El tipo de fecha es: " + typeof fecha) Podemos ver: boolean, para los datos boleanos. (True o false) number, para los numricos. string, para las cadenas de caracteres. object, para los objetos.
Declaracin de variables
Los datos maneja nuestro programa se almacenan en variables. El concepto de variable debe verse como un contenedor de informacin. var nombre_variable nombre_variable = "valor" Ejemplo: var resultado Resultado = 10 + 10
La variable resultado contiene ahora el valor 20. Para referirnos a ella, utilizamos su nombre.
JavaScript no es necesario indicar de qu tipo es una variable en el momento de su definicin. El tipo del dato queda definido en el momento en que se asigna un valor a la variable.
Por otra parte, podemos realizar la asignacin del valor de la variable en el momento de su declaracin, del siguiente modo:
var resultado = 10 + 10
Aunque en JavaScript no es estrictamente necesario declarar una variable antes de utilizarla, la declaracin mediante el uso de la palabra reservada var es siempre recomendable, por claridad. El nombre de una variable puede empezar por una letra o por el carcter _. Despus ya pueden ponerse nmeros. Los nombres de variables son sensibles a maysculas y minsculas.
<HTML> <HEAD><TITLE>Ejemplo 3.1: uso de una variable</TITLE> <SCRIPT LANGUAGE="JavaScript"> <!-var name = prompt("Introduce tu nombre:","Nombre") //--> </SCRIPT></HEAD> <BODY> <SCRIPT LANGUAGE="JavaScript"> <!-document.write("<H1>Hola " + name + ". Bienvenido a mi pgina!</H1>") //--> </SCRIPT></BODY></HTML>
Operadores aritmticos
Binarios
Unarios
Operadores lgicos
Operadores de comparacin
Operadores condicionales
(condicion) ? valor1 : valor2
<HTML> <HEAD><TITLE>Ejemplo operadores</TITLE> <SCRIPT LANGUAGE="JavaScript"> <!-var pregunta = "Cunto vale 10 + 10?" var respuesta_correcta = 20 var correcto = "<p>CORRECTO!</p>" var incorrecto = "<p>INCORRECTO</p>" //realiza la pregunta var respuesta_dada = prompt(pregunta, "0") //comprueba la respuesta var salida = (respuesta_dada == respuesta_correcta) ? correcto : incorrecto //--> </SCRIPT></HEAD> <BODY><SCRIPT LANGUAGE="JavaScript"> <!-//escribe la salida document.write(salida) //--> </SCRIPT></BODY></HTML>
En Javascript podemos tomar decisiones utilizando dos enunciados distintos. IF SWITCH En javascript existen varios tipos de bucles, cada uno est indicado para un tipo de iteracin distinto y son los siguientes: FOR WHILE DO WHILE Todas las estructuras de control se escriben en minsculas en Javascript.
Sentencia if
if (expresin) { //acciones a realizar en caso positivo //... }
if (expresin) { //acciones a realizar en caso positivo //... } else { //acciones a realizar en caso negativo //... }
Para empezar vemos como con unas llaves engloban las acciones que queremos realizar en caso de que se cumplan o no las expresiones. Estas llaves han de colocarse siempre, excepto en el caso de que slo haya una instruccin como acciones a realizar, que son opcionales.
Sentencias IF anidadas
/*si deseo comprobar si un nmero es mayor menor o igual que otro*/ var numero1=23 var numero2=63 if (numero1 == numero2){ document.write("Los dos nmeros son iguales") }else{ if (numero1 > numero2) { document.write("El primer nmero es mayor que el segundo") }else{ document.write("El primer nmero es menor que el segundo") } }
La estructura de control switch de Javascript es utilizada para tomar decisiones en funcin de distintos estados o valores de una variable.
switch (expresin) { case valor1: Sentencias a ejecutar si la expresin tiene como valor a valor1 break case valor2: Sentencias a ejecutar si la expresin tiene como valor a valor2 break case valor3: Sentencias a ejecutar si la expresin tiene como valor a valor3 break default: Sentencias a ejecutar si el valor no es ninguno de los anteriores }
switch (dia_de_la_semana) { case 1: document.write("Es Lunes") break case 2: document.write("Es Martes") break case 3: document.write("Es Mircoles") break case 4: document.write("Es Jueves") break case 5: document.write("Es viernes") break case 6: case 7: document.write("Es fin de semana") break default: document.write("Ese da no existe") }
El bucle FOR
Se utiliza para repetir una o ms instrucciones un determinado nmero de veces. De entre todos los bucles, el FOR se suele utilizar cuando sabemos seguro el nmero de veces que queremos que se ejecute.
Bucle WHILE
var color = "" while (color != "rojo"){ color = prompt("dame un color (escribe rojo para salir)","") }
Bucle DO...WHILE
if (condicion) sentencia unica if (condicion) { varias sentencias } if (condicion) { varias sentencias } else { varias sentencias2 }
<HTML> <HEAD><TITLE>Ejemplo sentencia if ... else</TITLE> <SCRIPT LANGUAGE="JavaScript"> <!-//definicion de variables var pregunta = "Cunto vale 10 + 10?" var respuesta_correcta = 20 var correcto = "<p>Correcto!</p>" var incorrecto = "<p>Incorrecto!</p>" //realiza la pregunta var respuesta_dada = prompt(pregunta, "0"); //comprueba la respuesta if (respuesta_dada != respuesta_correcta) { //respuesta incorrecta, segunda oportunidad if ( confirm("No! Pulsa OK para reintentarlo.")) respuesta_dada = prompt(pregunta, "0") } //comprueba la respuesta var salida = (respuesta_dada == respuesta_correcta) ? correcto : incorrecto //--> </SCRIPT></HEAD> <BODY><SCRIPT LANGUAGE="JavaScript"> <!-//escribe la salida document.write(salida) //--> </SCRIPT></BODY></HTML>
Funciones y objetos
El nombre de la funcin es sensible a maysculas y minsculas. Puede incluir el caracter "_" y empezar con una letra.
function ImprimeNombre(nombre) { document.write("<HR>Tu nombre es <B><I>") document.write(nombre) document.write("</B></I><HR>") } La variable nombre slo existe dentro de la funcin y lo mismo pasa para cualquier variable declarada dentro de la funcin.
Las funciones pueden devolver un valor. Para ello: function cubo(numero) { var cubo = numero * numero * numero return cubo } Tambin podra haber sido return numero * numero * numero
<HTML><HEAD><TITLE>Preguntador</TITLE> <SCRIPT LANGUAGE="JavaScript"> <!-function HazPregunta(pregunta) { //VARIABLES LOCALES var solucion = eval(pregunta) /*La funcin eval() evala un string devolviendo un valor numrico. Por ejemplo, eval("10*10") devolver el valor 100.*/ var salida = "Que da " + pregunta + "?" var correcto='<IMG SRC="correcto.gif">' var incorrecto='<IMG SRC="incorrecto.gif">' var respuesta = prompt(salida,"0") //COMPRUEBA EL RESULTADO return (respuesta == solucion) ? correcto : incorrecto} //--> </SCRIPT></HEAD> <BODY> <SCRIPT LANGUAGE="JavaScript"> <!-var resultado = HazPregunta("10 + 10") document.write(resultado) //--> </SCRIPT> </BODY></HTML>
Funciones recursivas
Son las que se llaman a s mismas. Un ejemplo tpico es el de la funcin que calcula el factorial de un nmero: x! = x * (x 1)!
function factorial(numero) { if (numero > 1) { return numero * factorial(numero - 1) } else { return numero } }
Veamos una modificacin del ejemplo anterior en la que la funcin HazPregunta es recursiva:
//DEFINICION DE LA FUNCION HazPregunta() function HazPregunta(pregunta) { //VARIABLES LOCALES var solucion = eval(pregunta) var salida = "Que da " + pregunta + "?" var correcto='<IMG SRC="correcto.gif">' var incorrecto='<IMG SRC="incorrecto.gif">' //REALIZA LA PREGUNTA var respuesta = prompt(salida,"0") //COMPRUEBA EL RESULTADO return (respuesta == solucion) ? correcto : HazPregunta(pregunta) }
Creacin de objetos
Primero es necesario definir su tipo (o clase): function empleado(nombre, edad, puesto) { this.nombre = nombre this.edad = edad this.puesto = puesto } En JavaScript, la partcula this se refiere al objeto en el que se utiliza. Una vez definida la clase, podemos crear variables (instanciar objetos) de esa clase de la siguiente manera: empleado_1 = new empleado("Pedro", 26, "Programador") Pueden aadirse propiedades a los objetos aunque estas no haya sido declaradas en la definicin de la clase. Por ejemplo: empleado_1.jefe = "Luis"
Los objetos pueden anidarse de forma que un objeto sea una propiedad de otro objeto.
function oficina(ciudad, pais) { this.ciudad = ciudad this.pais = pais } oficinaPedro = new oficina("Madrid","Espaa") empleado_1 = new empleado("Pedro", 26, "Programador", oficinaPedro) En el ejemplo anterior, hay que definir la clase empleado de esta forma: function empleado(nombre, edad, puesto, oficina){ this.nombre = nombre this.edad = edad this.puesto = puesto this.oficina = oficina }
Dentro de la definicin de la clase o tipo del objeto, pueden incluirse funciones que accedan a sus propiedades. Estas funciones reciben el nombre de mtodos.Un mtodo se define de la siguiente manera:
function mostrarPerfil() { document.write("Nombre: " + this.nombre + "<BR>") document.write("Edad: " + this.edad + "<BR>") document.write("Puesto: " + this.puesto + "<BR>") } function empleado(nombre, edad, puesto) { this.nombre = nombre this.edad = edad this.puesto = puesto this.mostrarPerfil = mostrarPerfil } As pueden mostrarse las propiedades del objeto empleado invocando el mtodo asociado: empleado_1.mostrarPerfil
<HTML><HEAD><TITLE>Empleados</TITLE> <SCRIPT LANGUAGE="JavaScript"> <!-function mostrarPerfil() { document.write("<H1>Perfil del empleado " + this.nombre + "</H1><HR><PRE>") document.writeln("Edad: " + this.edad) document.writeln("Puesto: " + this.puesto) document.write("</PRE>") } function empleado() { this.nonmbre = prompt("Introduzca el nombre del empleado: ", "Nombre") this.edad = prompt("Introduzca la edad de " + this.nombre, "00") this.mostrarPerfil = mostrarPerfil } nuevoEmpleado = new empleado() //--> </SCRIPT> </HEAD><BODY><SCRIPT LANGUAGE="JavaScript"> <!-nuevoEmpleado.mostrarPerfil() //--> </SCRIPT>
Arrays asociativos
En JavaScript las propiedades de un objeto y los arrays estn relacionados de la siguiente manera: empleado_1[0] = "Pedro" empleado_1[1] = 26 empleado_1[2] = "Programador" Y tambin se produce la siguiente equivalencia:
empleado_2["nombre"] equivale a empleado_2[0] empleado_2["edad"] equivale a empleado_2[1]
Eventos en JavaScript
En JavaScript, la interaccin con el usuario se consigue mediante la captura de los eventos que ste produce. Un evento es una accin del usuario ante la cual puede realizarse algn proceso (por ejemplo, el cambio del valor de un formulario, o la pulsacin de un enlace). Los eventos se capturan mediante los manejadores de eventos. El proceso a realizar se programa mediante funciones JavaScript llamadas por los manejadores de eventos.
La siguiente tabla muestra los manejadores de eventos que pueden utilizarse en JavaScript, la versin a partir de la cual estn soportados y su significado Ejemplo de evento:
<INPUT TYPE="text" onChange="CompruebaCampo(this)"> En este ejemplo, CompruebaCampo() es una funcin JavaScript definida en alguna parte del documento HTML (habitualmente en la cabecera del mismo). El identificador this es una palabra propia del lenguaje, y se refiere al objeto desde el cual se efectua la llamada a la funcin (en este caso, el campo del formulario).
Manejador Versin Se produce cuando... onAbort 1.1 El usuario interrumpe la carga de una imagen onBlur 1.0 Un elemento de formulario, una ventana o un marco pierden el foco onChange 1.0 (1.1 para FileUpload) El valor de un campo de formulario cambia onClick 1.0 Se hace click en un objeto o formulario onDblClick 1.2 (no en Mac) Se hace click doble en un objeto o formulario onDragDrop 1.2 El usuario arrastra y suelta un objeto en la ventana onError 1.1 La carga de un documento o imagen produce un error onFocus 1.1 (1.2 para Layer) Una ventana, marco o elemento de formulario recibe el foco onKeyDown 1.2 El usuario pulsa una tecla onKeyPress 1.2 El usuario mantiene pulsada una tecla onKeyUp 1.2 El usuario libera una tecla onLoad 1.0 (1.1 para image) El navegador termina la carga de una ventana onMouseDown 1.2 El usuario pulsa un botn del ratn onMouseMove 1.2 El usuario mueve el puntero onMouseOut 1.1 El puntero abando una rea o enlace onMouseOver 1.0 (1.1 para area) El puntero entra en una rea o imagen onMouseUp 1.2 El usuario libera un botn del ratn onMove 1.2 Se mueve una ventana o un marco onReset 1.1 El usuario limpia un formulario onResize 1.2 Se cambia el tamao de una ventana o marco onSelect 1.0 Se selecciona el texto del campo texto o rea de texto de un formulario onSubmit 1.0 El usuario enva un formulario onUnload 1.0 El usuario abandona una pgina
La siguiente tabla muestra los eventos que pueden utilizarse con los objetos del modelo de objetos JavaScript del Navigator. Manejador de evento Objetos para los que est definido onAbort Image onBlur Button, Checkbox, FileUpload, Layer, Password, Radio, Reset, Select, Submit, Text, Textarea, window onChange FileUpload, Select, Text, Textarea onClick Button, document, Checkbox, Link, Radio, Reset, Submit onDblClick document, Link onDragDrop window onError Image, window onFocus Button, Checkbox, FileUpload, Layer, Password, Radio, Reset, Select, Submit, Text, Textarea, window onKeyDown document, Image, Link, Textarea onKeyPress document, Image, Link, Textarea onKeyUp document, Image, Link, Textarea onLoad Image, Layer, window onMouseDown Button, document, Link onMouseMove Ninguno (debe asociarse a uno) onMouseOut Layer, Link onMouseOver Layer, Link onMouseUp Button, document, Link onMove window onReset Form onResize window onSelect Text, Textarea onSubmit Form onUnload window
blur() Elimina el foco del objeto desde el que se llame click() Simula la realizacin de un click sobre el objeto desde el que se llame focus() Lleva el foco al objeto desde el que se llame select() Selecciona el rea de texto del campo desde el que se llame submit() Realiza el envo del formulario desde
Ejemplo: <HTML> <HEAD><TITLE>Eventos</TITLE> <SCRIPT> <!-function Reacciona(campo) { alert("Introduzca un valor!") campo.focus() } //--> </SCRIPT></HEAD> <BODY> <FORM METHOD=POST> <INPUT TYPE=text NAME=campo onFocus="Reacciona(this)"> </FORM> </BODY> </HTML>
Eventos onLoad y onUnload Se usan como atributos del tag <BODY> de HTML. <BODY onLoad="Hola()" onUnload="Adios()"> La funcin Hola() se ejecutar antes de que se cargue la pgina y la funcin Adios() al abandonarla. Ejemplo: <HTML> <HEAD> <TITLE>Ejemplo onLoad y onUnload</TITLE> </HEAD> <BODY onLoad="alert('Bienvenido a mi pgina!')" onUnload="alert('Vuelva pronto!')"> ... </BODY> </HTML>
<HTML> <HEAD> <TITLE>Ejemplo con funciones</TITLE> <SCRIPT LANGUAGE="JavaScript"> <!-var name = "" function Hola() { nombre = prompt('Introduzca su nombre:','') alert('Hola ' + nombre + '!') } function Adios() { alert('Adios ' + nombre + '!') } //--> </SCRIPT> </HEAD> <BODY onLoad="Hola()" onUnload="Adios()"> ... </BODY> </HTML>
<HTML> <HEAD><TITLE>Ejemplo de metodo submit()</TITLE> <SCRIPT LANGUAGE="JavaScript"> <!-function CompruebaValor(Formu) { if (Formu.respuesta.value == "100") Formu.submit() else Formu.respuesta.value = "" } //--> </SCRIPT> </HEAD><BODY> <FORM METHOD=POST onSubmit="alert('Respuesta correcta!'); return false"> Cunto vale 10 * 10? <INPUT TYPE="text" NAME="respuesta" onChange="CompruebaValor(this.form)"> </FORM> </BODY> </HTML>
Eventos de formulario
<BODY> <FORM METHOD=POST> Number: <INPUT TYPE=text NAME="Numero" VALUE=1 onChange="Calcula(this.form);"><BR> x 1: <INPUT TYPE=text NAME="1" VALUE=1 onFocus="blur();"><BR> x 2: <INPUT TYPE=text NAME="2" VALUE=2 onFocus="blur();"><BR> x 3: <INPUT TYPE=text NAME="3" VALUE=3 onFocus="blur();"><BR> x 4: <INPUT TYPE=text NAME="4" VALUE=4 onFocus="blur();"><BR> x 5: <INPUT TYPE=text NAME="5" VALUE=5 onFocus="blur();"><BR> x 6: <INPUT TYPE=text NAME="6" VALUE=6 onFocus="blur();"><BR> x 7: <INPUT TYPE=text NAME="7" VALUE=7 onFocus="blur();"><BR> x 8: <INPUT TYPE=text NAME="8" VALUE=8 onFocus="blur();"><BR> x 9: <INPUT TYPE=text NAME="9" VALUE=9 onFocus="blur();"><BR> x 10: <INPUT TYPE=text NAME="10" VALUE=10 onFocus="this.blur();"><BR> <INPUT TYPE=button NAME="Calcula" VALUE="Calcula" onClick="Calcula(this.form);"> </FORM> </BODY> </HTML>
La gran ventaja del array elements es la simplificacin del cdigo mediante la utilizacin de bucles y el acceso a los elementos del formulario mediante ndices. Por ejemplo, la funcin Calcula() del ejemplo anterior puede escribirse de la siguiente forma: function Calcula(Formu) { var Numero = Formu.Numero.value for(num = 1; num <= 10; num++) { Formu.elements[num].value = Numero * num } }
Cada elemento de un formulario posee propiedades y mtodos que pueden utilizarse en los scripts para actuar sobre el formulario. A continuacin vamos a describir los ms importantes.
<HTML> <HEAD> <TITLE>Ejemplo de cuadro de seleccion (checkbox)</TITLE> <SCRIPT> <!-function Calcula(Formu, Campo) { if (Formu.BotonAccion[1].checked) { Formu.resultado.value = Math.sqrt(Formu.entrada.value) } else { Formu.resultado.value = Formu.entrada.value * Formu.entrada.value } } //--> </SCRIPT> </HEAD> <BODY> <FORM METHOD=POST> <P>Valor:<BR> <INPUT TYPE="text" NAME="entrada" VALUE=0 onChange="Calcula(this.form, this.name);"> <P>Accin:<BR> <INPUT TYPE="radio" NAME="BotonAccion" VALUE="cuadrado"> Al cuadrado<BR> <INPUT TYPE="radio" NAME="BotonAccion" VALUE="raiz2"> Raiz cuadrada<BR> <P>Resultado:<BR> <INPUT TYPE=text NAME="resultado" VALUE=0> </FORM> </BODY> </HTML>
Como ejemplo, dado el siguiente cdigo HTML: <SELECT NAME="Ejemplo" onFocus="Ver()"> <OPTION SELECTED VALUE="Opcin 1">1 <OPTION VALUE="Opcin 2">2 <OPTION VALUE="Opcin 3">3 </SELECT> las propiedades de la lista de seleccin se acceden como se muestra, tomando los valores que aparecen a la derecha: Ejemplo.options[1].value = "Opcin 2" Ejemplo.options[2].text = "3" Ejemplo.selectedIndex = 0 Ejemplo.options[0].defaultSelected = true Ejemplo.options[1].selected = false
Area de texto (textarea) Posee las propiedades defaultValue, name y value, con el mismo significado que para el cuadro de texto. Los mtodos focus(), blur() y select() pueden utilizarse con este elemento, al igual que los eventos onFocus, onBlur y onSelect. Botones submit y reset Los botones submit y reset poseen las propiedades name y value, puediendo utilizarse con ellos el mtodo click() y el evento onClick(). El botn submit posee un mtodo y un evento especficos: el mtodo submit() y el evento onSubmit. El mtodo submit() realiza el emisin del formulario (es equivalente a pulsar el botn submit). El evento onSubmit se produce cuando se enva el formulario, permitiento realizar operaciones con los datos del formulario antes de realizar el envo (por ejemplo, validacin de campos).
function BorraNumero(Formu) { Formu.display.value = "" } function Calcula(Operacion) { var Formu = Operacion.form var Expresion = total + UltimaOperacion + Formu.display.value UltimaOperacion = Operacion.value total = eval(Expresion) Formu.display.value = total NuevoNumero = true } //--> </SCRIPT> </HEAD> <BODY> <FORM> <TABLE BORDER=1> <TR><TD COLSPAN=4><INPUT TYPE=text NAME=display VALUE="" onFocus="this.blur();"></TD></TR> <TR> <TD><INPUT TYPE=button NAME="7" VALUE=" 7 " onClick="IntroduceNumero(this);"></TD> <TD><INPUT TYPE=button NAME="8" VALUE=" 8 " onClick="IntroduceNumero(this);"></TD> <TD><INPUT TYPE=button NAME="9" VALUE=" 9 " onClick="IntroduceNumero(this);"></TD> <TD><INPUT TYPE=button NAME="+" VALUE=" + " onClick="Calcula(this);"></TD></TR><TR> <TD><INPUT TYPE=button NAME="4" VALUE=" 4 " onClick="IntroduceNumero(this);"></TD>
} function Limpiar(Formu) { total = 0 UltimaOperacion = "+" Formu.display.value = "" } function BorraNumero(Formu) { Formu.display.value = "" } function Calcula(Operacion) { var Formu = Operacion.form var Expresion = total + UltimaOperacion + Formu.display.value UltimaOperacion = Operacion.value total = eval(Expresion) Formu.display.value = total NuevoNumero = true } //--> </SCRIPT> </HEAD> <BODY> <FORM> <TABLE BORDER=1>