fundamentos de javascript - Blogs de TI-M

Anuncio
Índice de capítulos
CAPÍTULO 1: INTRODUCCIÓN A JAVASCRIPT .................................................................. 3
1.
2.
3.
¿QUÉ ES JAVASCRIPT? .................................................................................................... 3
EL PROBLEMA DE LAS VERSIONES ........................................................................................ 3
¿CÓMO INTRODUCIR JAVASCRIPT EN EL CÓDIGO HTML? ........................................................... 4
CAPÍTULO 2: FUNDAMENTOS DE JAVASCRIPT ................................................................. 4
1.
2.
3.
4.
5.
6.
INTRODUCCIÓN DE CÓDIGO JAVASCRIPT EN LAS PÁGINAS ........................................................... 4
COMENTARIOS EN JAVASCRIPT........................................................................................... 5
INCLUSIÓN DE FICHEROS EXTERNOS CON CÓDIGO JAVASCRIPT ..................................................... 5
ESCRITURA DE CADENAS DE TEXTO EN LA PÁGINA ..................................................................... 6
CUADROS DE DIÁLOGO .................................................................................................... 7
COMENTARIOS EN EL CÓDIGO ............................................................................................ 8
CAPÍTULO 3: TRABAJANDO CON DATOS E INFORMACIÓN .............................................. 8
1.
2.
3.
TIPOS DE DATOS ........................................................................................................... 8
DECLARACIÓN DE VARIABLES ............................................................................................. 9
OPERADORES ARITMÉTICOS ............................................................................................. 10
I.
II.
4.
5.
6.
7.
8.
Binarios ................................................................................................................ 10
Unarios................................................................................................................. 10
OPERADORES LÓGICOS ................................................................................................... 10
OPERADORES DE COMPARACIÓN ........................................................................................ 10
OPERADORES CONDICIONALES .......................................................................................... 10
COMPARACIONES: SENTENCIA IF ... ELSE .............................................................................. 11
LOOP ........................................................................................................................ 12
I. while Loop ............................................................................................................ 12
II. do...while Loop...................................................................................................... 12
III.
Ciclo For, For ... in.............................................................................................. 12
IV.
Instrucción try ... catch ....................................................................................... 13
V. La sentencia throw ................................................................................................ 14
CAPÍTULO 4: FUNCIONES Y OBJETOS............................................................................. 14
1.
2.
3.
4.
5.
6.
7.
DEFINICIÓN DE UNA FUNCIÓN ........................................................................................... 14
FUNCIONES RECURSIVAS ................................................................................................. 15
CREACIÓN DE OBJETOS ................................................................................................... 15
EL MÉTODO ROUND() REDONDEA UN NÚMERO AL ENTERO MÁS CERCANO ........................................ 17
EL MÉTODO MAX() DEVUELVE EL VALOR MÁS ALTO ................................................................... 18
INFORMACIÓN DEL NAVEGADOR ......................................................................................... 18
ARRAYS ..................................................................................................................... 18
Capítulo 1: Introducción a JavaScript
El presente tutorial no pretende ser una descripción extensa de los fundamentos de la programación de scripts de
cliente con JavaScript. Intentaremos en estas páginas introducir los conceptos básicos que permitan utilizar los scripts
de los ejemplos de código, interpretarlos adecuadamente y realizar las modificaciones necesarias para adaptarlos a sus
necesidades.
1.
2.
3.
¿Qué es JavaScript?
El problema de las versiones
¿Cómo introducir un script en el codigo HTML?
1. ¿Qué es JavaScript?
JavaScript es un lenguaje de scripts desarrollado por Netscape para incrementar las funcionalidades del lenguaje
HTML. Sus características más importantes son:
JavaScript es un lenguaje interpretado, es decir, no requiere compilación. El navegador del usuario se encarga de
interpretar las sentencias JavaScript contenidas en una página HTML y ejecutarlas adecuadamente.
JavaScript es un lenguaje orientado a eventos. Cuando un usuario pincha sobre un enlace o mueve el puntero
sobre una imagen se produce un evento. Mediante JavaScript se pueden desarrollar scripts que ejecuten acciones
en respuesta a estos eventos
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 información de una página y
puedan actuar sobre la interfaz del navegador.
2. El problema de las versiones
JavaScript fue desarrollado por Netscape, y la primera versión, la 1.0, fue introducida por primera vez en su navegador
Netscape Navigator 2. JavaScript 1.1 representó una mejora en las características del lenguaje, y se incluyó en el
Navigator 3.
Microsoft intentó dar soporte a la primera versión de JavaScript en el Internet Explorer 3 (con el nombre de JScript). Sin
embargo, Jscript resultó poco fiable y estaba plagado de bugs.
El organismo de estandarización ECMA impulsó la creación de un estándar para normalizar la sintaxis del lenguaje
JavaScript. El esfuerzo se concretó en el estándar ECMA-262, que Microsoft introdujo en el Internet Explorer 4. El ECMA262 se basó en la versión 1.2 de JavaScript, introducida con el Navigator 4, por lo que compartía la mayoría de las
características de éste, aunque sin ser totalmente compatible.
Las últimas versiones del Navigator (a partir de la 4.06) implementaron una nueva versión de JavaScript, la 1.3,
totalmente compatible con la especificación ECMA-262. Desde entonces, la batalla de los navegadores ha dado un
vuelco radical. La mayoría de los navegadores modernos (versiones 6 y 7 del IE, Opera y Netscape, y los nuevos
navegadores Mozilla y Firefox) soportan la versión 1.5 de JavaScript, la última publicada.
<noscript> Uso y definición
La etiqueta <noscript> se utiliza para proporcionar un contenido alternativo para los usuarios con navegadores no
compatibles con javascript o un navegador con bloqueo de javascript.
El elemento noscript puede contener todos los elementos que se pueden encontrar dentro del elemento body de una
página HTML normal.
El contenido dentro del elemento noscript sólo se mostrará si los scripts no son compatibles, o se desactivan en el
navegador del usuario.
<html>
<head>
<title>Ejemplo noscript</title>
<script type="text/javascript">
document.write("Hello World!")
</script>
<noscript>Tu navegador no soporta Javascript! </noscript>
</head>
<body>
<font>Ejemplo</font>
</body>
</html>
3. ¿Cómo introducir JavaScript en el código HTML?
Básicamente existen dos formas de introducir un script de JavaScript en una página HTML:
Embebido en el código HTML, entre las etiquetas o tags <script> y </script>.
El siguiente código muestra un ejemplo de código JavaScript embebido en el HTML de una página. Como se observa, el
código JavaScript figura entre las marcas de comentario HTML <!-- y -->, para que los navegadores antiguos (que no
soportan las etiquetas script) no muestren el código fuente en la página. Además, delante de la marca de cierre de
comentario HTML se insertan los caracteres //, que en JavaScript significan ignorar el resto de la línea, para que el
intérprete JavaScript no dé error por la línea --> de comentario HTML.
<HTML>
<HEAD>
<TITLE>Introducción a JavaScript</TITLE>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!-function saludo() {
window.alert('¡Bienvenido a JavaScript!')
}
//-->
</SCRIPT>
</HEAD>
<BODY onLoad="saludo()">
</BODY>
</HTML>
Como archivo .js que se carga con la página HTML. Para ello, debe indicarse en las tags anteriores el nombre y ubicación del
archivo .js que contiene el script JavaScript, como en este ejemplo:
<HTML>
<HEAD>
<TITLE>Tutorial de JavaScript</TITLE>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript" SRC="codigo.js"></SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>
Capítulo 2: Fundamentos de JavaScript
1. Introducción de código JavaScript en las páginas
Para introducir código JavaScript en una página HTML, debe incluirse el siguiente código (normalmente, entre las etiquetas
<head> y </head> de la página, aunque tabién puede ir en el cuerpo de la misma):
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!-Programa JavaScript
//-->
</SCRIPT>
Las líneas 2 y 4 se introducen para evitar que se generen errores en navegadores que no soporten JavaScript y para que
estos navegadores no muestren el código del script en la página.
2. Comentarios en JavaScript
Los comentarios se utilizan en todos los lenguajes de programación para añadir explicaciones al código. Cuando el
intérprete de comandos (o compilador, según el caso) encuentra estas líneas, las ignora. En JavaScript se utiliza el
formato de comentarios propio de C/C++. Así, si es para comentar una línea:
// Comentario de una línea
Si el comentario ocupa varias líneas, se usan los caracteres /* (inicio de comentario) y */ (fin de comentario):
/* comentario de varias
líneas */
Los bloques de código que integran una unidad son encerrados entre los caracteres { y } (por ejemplo, el código de una
función, o las sentencias incluidas dentro de un bucle). Por otra parte, JavaScript hace diferencia entre mayúsculas y
minúsculas para los nombres de variables y funciones.
3. Inclusión de ficheros externos con código JavaScript
Los scripts que queramos utilizar en una página suelen escribirse en la misma página, normalmente entre las etiquetas
<head> y </head>. Determinados scripts pueden aparecer entre las etiquetas <body> y </body> (por ejemplo,
gestores de eventos, o scripts que escriben código on-line), pero lo normal es que la mayoría de las funciones estén en
la cabecera de la página.
Otra posibilidad es la inclusión del código JavaScript en ficheros externos, de extensión .js. Estos ficheros son enlazados
desde la página HTML donde se utilizan con este código (que deberá ir también entre <head> y </head>):
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript" SRC="fichero.js"></SCRIPT>
Este código es ignorado automáticamente por los navegadores que no soportan JavaScript. Por otra parte, esta forma
de enlazar con ficheros externos con código JavaScript no está soportada por las versión 2 del Netscape Navigator
(aunque teniendo en cuenta la antiguedad de este navegador, este hecho no es de gran relevancia, salvo que exista una
necesidad expresa de soportar el Navigator 2).
4. Escritura de cadenas de texto en la página
Las cadenas de texto en JavaScript pueden ir entre comillas dobles o simples indistintamente. Lo único que hay que
tener en cuenta es utilizar el mismo tipo de comillas en la apertura y cierre de la cadena de texto. Por ejemplo, para
escribir la palabra Texto en una página, podemos utilizar indistintamente
document.write("Texto")
o bien
document.write('Texto')
Cuando una cadena de texto que va entre comillas dobles contiene el propio caracter de comillas dobles, éste deberá ir
precedido de \, que en JavaScript se utiliza como caracter de escape (igual que en otros muchos lenguajes). Por
ejemplo, para escribir la cadena Caracter ", tendríamos que usar:
document.write("Caracter \"")
La posibilidad de utilizar comillas simples o dobles para definir candenas de texto es muy útil cuando se usa JavaScript
para escribir código HTML. En el lenguaje HTML, los valores de los atributos deben ir entre comillas dobles. La cadena
de texto JavaScript podrá ir entre comillas simples, y contener las comillas dobles, sin necesidad de preceder las comillas
dobles del caracter de escape. Por ejemplo:
document.write('<IMG SRC="imagen.gif">')
Para escribir la cadena Texto más un retorno de carro podemos usar
document.writeln("Texto")
o bien
document.write("Texto\n")
El \n que aparece al final de la cadena del segundo ejemplo es un código especial que indica retorno de carro. Este
código sirve para generar el caracter no imprimible de retorno de carro. Otros caracteres no imprimibles que pueden
utilizarse son:
\n
\t
\r
\f
\b
Carácter Significado
Nueva línea
Tabulador
Retorno de carro
Alimentación de formulario
Retroceso de un espacio
Ejemplo:
<HTML>
<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>
Como el nombre de la imagen lleva comillas dobles, el texto pasado al método write lleva comillas simples.
5. Cuadros de diálogo
La manera más sencilla consiste en utilizar el método alert() del objeto window:
alert("Texto")
Por ejemplo:
alert("¡Bienvenido!\n\tEstas en el curso de JavaScript.")
Este tipo de ventanas de diálogo muestra un botón de aceptar, normalmente con el nombre Aceptar, que el usuario
deberá pulsar para continuar.
Existen otros tipos de ventanas de diálogo que interactúan con el usuario. El método prompt() del objeto window
muestra una caja de texto en la que el usuario puede introducir contenidos. También muestra dos botones, Aceptar y
Cancelar. Ejemplo:
prompt("Su color favorito es: ","Azul")
El segundo parámetro es el valor predeterminado para la caja de texto, que el usuario podrá modificar. Este cuadro de
diálogo permite capturar datos introducidos por el usuario y realizar una acción en base a ellos. Por ejemplo, podemos
pedirle al usuario que introduzca su nombre, y después mostrarlo:
<HTML>
<HEAD>
<TITLE>Ejemplo 2.2: página que pide el nombre</TITLE>
</HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!-var nombre = prompt("Introduzca su nombre:","")
document.write("<H2>Bienvendo, " + nombre + "</H2>")
//-->
</SCRIPT>
<P>Aquí va el resto de la página...</P>
</BODY>
</HTML>
Finalmente, para pedir al usuario confirmación en la realización de una acción podemos usar el método confirm() del
objeto window. Este método mostrará un cuadro de diálogo con el mensaje de texto que le pasemos como parámetro, y
dos botones, Aceptar y Cancelar:
confirm("¿Desea volver al inicio de la página?")
Veamos ahora un ejemplo completo que utiliza este cuadro de diálogo:
<HTML>
<HEAD>
<TITLE>Ejemplo 2.3: página que pide confirmación</TITLE>
</HEAD>
<BODY>
<H1>Página 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 página...</P>
</BODY>
</HTML>
Este ejemplo pide confirmación para cargar el resto de la página. Si se elige la opción Cancelar, se cierra la ven tana (el
navegador mostrará un cuadro de diálogo de confirmación). Si se pulsa Aceptar, se muestra el resto de la página
6. Comentarios en el código
<html>
<head>
<title>Ejemplo</title>
<script type=”text/javascript”>
// Comentario de una línea
/*
Comentario
de
varias
líneas
*/
</script>
</head>
<body>
</body>
</html>
Capítulo 3: Trabajando con datos e información
1. Tipos de datos
Los scripts que utilicemos en nuestras páginas HTML manejarán datos y valores para producir resultados. En todo
lenguaje de programación existen unos tipos estándar que definen el rango de valores que puede tomar cada dato. Así,
un dato del tipo numérico tomará valores numéricos, y no podrá ser una cadena de texto.
En JavaScript un dato puede ser de uno de los siguientes tipos:
Tipo
Número
Cadena
Booleano
Objeto
Función
NULL
Ejemplo
Cualquier número, como 12, 22.5 o 2e8
"Hola" u 'Hola'
Verdadero (true) o falso (false)
Palabra clave para indicar ningún valor
Los números 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 dígito 0, estará en base 8.
Hexadecimal (base 16): para indicar número en hexadecimal, hay que anteponerlo con 0x o 0X (por ejemplo 0x1A).
En JavaScript, la cadena vacía "" es diferente de null.
2. Declaración de variables
Los datos que se manejan en nuestro programa se almacenan en variables. El concepto de variable debe verse como un
contenedor de información.
var nombre_variable
nombre_variable = "valor"
La primera línea es la declaración de la variable. La siguiente línea le asigna un valor.
Por ejemplo, si queremos guardar el resultado de una suma, podemos definir una variable de nombre resultado y
asignarle el valor de la suma.
var resultado
resultado = 10 + 10
La variable resultado contiene ahora el valor 20.
Para referirnos a ella, utilizamos su nombre. Como se observa, en JavaScript no es necesario indicar de qué tipo es una
variable en el memento de su definición. El tipo del dato queda definido en el momento en que se asigna un valor a la
variable.
Por otra parte, podemos realizar la asignación del valor de la variable en el momento de su declaración, del siguiente
modo:
var resultado = 10 + 10
Aunque en JavaScript no es estrictamente necesario declarar una variable antes de utilizarla, la declaración 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 carácter _. Después ya pueden ponerse números. Los
nombres de variables son sensibles a mayúsculas y minúsculas.
Ejemplo:
<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('<IMG SRC="welcome.gif">')
document.write("<H1>Hola " + name + ". ¡Bienvenido a mi página!</H1>")
//-->
</SCRIPT></BODY></HTML>
3. Operadores aritméticos
En todo lenguaje de programación existen un conjunto de operadores que permiten realizar operaciones con los datos.
Nos referimos a operaciones aritméticas, comparaciones, operaciones lógicas y otras operaciones (por ejemplo,
concatenación de cadenas, búsqueda de patrones, etc.).
En JavaScript existen los siguientes operadores aritméticos:
I.
Operador
=
+=
-=
*=
/=
%=
Descripción
Asigna el valor del operando de la izquierda al operando de la derecha
Suma el operando de la izquierda al de la derecha y asigna el resultado al operando de la derecha
Resta al operando de la izquierda el de la derecha y asigna el valor al operando de la derecha
Multiplica el operando de la derecha por el de la izquierda y asigna el valor al operando de la derecha
Divide el operando de la izquierda por el de la derecha y asigna el valor al operando de la derecha
Divide el operando de la izquierda por el de la derecha y asigna el valor del resto de la división al
operando de la derecha
II.
Operador
++x
x++
-x
Binarios
Unarios
Descripción
Incrementa x en una unidad y devuelve el valor
Ddevuelve el valor de x y lo deja incrementado en una unidad
Devuelve x negado
4. Operadores lógicos
Los operadores lógicos son los operadores del álgebra de Bull o booleanos.
Operador
&&
||
!
Descripción
Y lógico (devuelve verdadero si los dos operandos son verdaderos, y falso en caso contrario)
O lógico (devuelve verdadero si uno de los dos operandos o ambos son verdaderos, y falso en caso
contrario)
No lógico (devuelve verdadero si el operando es falso, y falso si es verdadero)
5. Operadores de comparación
Los operadores de comparación devuelven siempre verdadero (true) o falso (false). Este tipo de operadores se utilizan
con gran frecuencia en todos los lenguajes de programación, para realizar una acción u otra en función de que cierta
condición sea verdadera o falsa.
Operador
==
!=
>
<
>=
<=
6.
Descripción
Devuelve verdadero
Devuelve verdadero
Devuelve verdadero
Devuelve verdadero
Devuelve verdadero
Devuelve verdadero
si
si
si
si
si
si
los dos operadores son iguales
los dos operadores son distintos
el primer operando es mayor que el segundo
el primer operando es menor que el segundo
el primer operando es mayor o igual que el segundo
el primer operando es menor o igual que el segundo
Operadores condicionales
El operador ? es un operador especial en JavaScript (heredado de C++). Veamos un ejemplo:
(condicion) ? valor1 : valor2
Si la condición es verdadera, la expresión toma el valor 1 y si es falsa el valor 2. Por ejemplo:
(dia=="Domingo") ? "Festivo" : "Laborable"
Ejemplo:
<HTML>
<HEAD><TITLE>Ejemplo operadores</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!-var pregunta = "¿Cuánto 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>
7. Comparaciones: sentencia if ... else
Las comparaciones se realizan utilizando la sentencia if ... else. Su sintaxis es la siguiente:
if (condicion)
sentencia unica
if (condicion) {
varias sentencias
}
if (condicion) {
varias sentencias
} else {
varias sentencias2
}
Las sentencias if ... else pueden anidarse. En el siguiente script podemos ver un ejemplo de sentencia if ... else.
<HTML>
<HEAD><TITLE>Ejemplo sentencia if ... else</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!-//definicion de variables
var pregunta = "¿Cuánto 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>
8. Loop
I.
while Loop
El ciclo while repite un bloque de código cuando una condición especificada es verdadera.
<html>
<body>
<script type="text/javascript">
var i=0;
while (i<=5)
{
document.write("El número es " + i);
document.write("<br />");
i++;
}
</script>
</body>
</html>
II.
do...while Loop
El ciclo do ... while es una variante del ciclo while. Este ciclo ejecutará el bloque de código una vez, y luego se repite el ciclo
mientras la condición especificada es verdadera
<html>
<body>
<script type="text/javascript">
var i=0;
do
{
document.write("El número es " + i);
document.write("<br />");
i++;
}
while (i<=5);
</script>
</body>
</html>
III.
Ciclo For, For ... in
El ciclo for se utiliza cuando se sabe de antemano cuántas veces se debería ejecutar el script
<html>
<body>
<script type="text/javascript">
var i=0;
for (i=0;i<=5;i++)
{
document.write("El número es " + i);
document.write("<br />");
}
</script>
</body>
</html>
<html>
<body>
<script type="text/javascript">
var x;
var mycars = new Array();
mycars[0] = "Saab";
mycars[1] = "Volvo";
mycars[2] = "BMW";
for (x in mycars)
{
document.write(mycars[x] + "<br />");
}
</script>
</body>
</html>
IV.
Instrucción try ... catch
La instrucción try ... catch te permite probar un bloque de código y en caso de error mostrar un mensaje personalizado. El
bloque try contiene el código que se ejecuta, y el bloque catch contiene el código que se ejecutará si se produce un error.
<html>
<head>
<script type="text/javascript">
var txt="";
function message()
{
try
{
adddlert("Bienvenido al curso de fundamentos de javascript!");
}
catch(err)
{
txt="Ocurrió un error inesperado.\n\n";
txt+="Descripción del error: " + err.description + "\n\n";
txt+="Clic OK para continuar.\n\n";
alert(txt);
}
}
</script>
</head>
<body>
<input type="button" value="Ver mensaje" onclick="message()" />
</body>
</html>
V.
La sentencia throw
La sentencia throw le permite crear una excepción. Si utiliza esta declaración junto con la sentencia try ... catch, puedes
controlar el flujo del programa y generar mensajes de error.
<html>
<body>
<script type="text/javascript">
var x=prompt("Introduce un número entre 0 y 10:","");
try
{
if(x>10)
{
throw "Err1";
}
else if(x<0)
{
throw "Err2";
}
else if(isNaN(x))
{
throw "Err3";
}
}
catch(er)
{
if(er=="Err1")
{
alert("Error! El valor de X es mayor a 10");
}
if(er=="Err2")
{
alert("Error! El valor de X es menor que 0");
}
if(er=="Err3")
{
alert("Error! El valor de X no es númerico");
}
}
</script>
</body>
</html>
Capítulo 4: Funciones y objetos
1. Definición de una función
function nombre_funcion(argumentos) {
bloque de comandos
} El nombre de la función es sensible a mayúsculas y minúsculas. Puede incluir el caracter "_" y empezar con una letra.
Ejemplo:
function ImprimeNombre(nombre) {
document.write("<HR>Tu nombre es <B><I>")
document.write(nombre)
document.write("</B></I><HR>")
}
La variable nombre sólo existe dentro de la función y lo mismo pasa para cualquier variable declarada dentro de la
función.
Las funciones pueden devolver un valor. Para ello:
function cubo(numero) {
var cubo = numero * numero * numero
return cubo
}
También podría haber sido
return numero * numero * numero
La función eval () evalúa y / o ejecuta una cadena de código JavaScript.
En primer lugar, eval () determina si el argumento es una cadena válida, después eval () analiza la cadena en búsqueda
de código JavaScript. Si encuentra cualquier código JavaScript lo ejecutará. Por ejemplo, eval("10*10") devolverá el
valor 100.
Ejemplo:
<HTML>
<HEAD>
<TITLE>Preguntador</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!-//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 : incorrecto
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!-//EJECTUA LA FUNCION HazPregunta
var resultado = HazPregunta("10 + 10")
document.write(resultado)
//-->
</SCRIPT>
</BODY>
</HTML>
2. Funciones recursivas
Son las que se llaman a sí mismas esta función puede crear problemas de memoria.
3. Creación de objetos
Un objeto es un tipo especial de dato que contiene una colección de propiedades y métodos.
Para crear objetos, primero es necesario definir sus propiedades (clase):
function empleado(nombre, edad, puesto) {
this.nombre = nombre
this.edad = edad
this.puesto = puesto
}
En JavaScript, el objeto 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 añadirse propiedades a los objetos aunque estas no haya sido declaradas en la definición de la clase. Por
ejemplo:
empleado_1.jefe = "Luis"
Estas propiedades nuevas sólo afectaran a ese objeto y no al resto.
Los objetos pueden anidarse de forma que un objeto sea un a propiedad de otro objeto. Por ejemplo:
function empleado(nombre, edad, puesto, oficina)
this.nombre = nombre
this.edad = edad
this.puesto = puesto
this.oficina = oficina
}
function oficina(ciudad, pais) {
this.ciudad = ciudad
this.pais = pais
}
oficinaPedro = new oficina("Madrid","España")
empleado_1 = new empleado("Pedro", 26, "Programador", oficinaPedro)
Dentro de la definición de la clase o tipo de objeto, pueden incluirse funciones. Estas funciones reciben el nombre de
métodos. Un método se define de la siguiente manera:
function empleado(nombre, edad, puesto, oficina)
this.nombre = nombre
this.edad = edad
this.puesto = puesto
this.oficina = oficina
this.mostrarPerfil = mostrarPerfil
}
function oficina(ciudad, pais) {
this.ciudad = ciudad
this.pais = pais
}
function mostrarPerfil() {
document.write("Nombre: " + this.nombre + "<BR>")
document.write("Edad: " + this.edad + "<BR>")
document.write("Puesto: " + this.puesto + "<BR>")
}
oficinaPedro = new oficina("Madrid","España")
empleado_1 = new empleado("Pedro", 26, "Programador", oficinaPedro)
Así pueden mostrarse las propiedades del objeto empleado invocando el método asociado:
empleado_1.mostrarPerfil;
Ejemplo final:
<HTML>
<HEAD>
<TITLE>Empleados</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!-//DEFINE EL METODO muostrarPerfil
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>")
}
//DEFINE EL OBJECTO EMPLEADO
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>
</BODY>
</HTML>
4. El método round() redondea un número al entero más cercano
<html>
<head>
<title>Ejemplo</title>
</head>
<body>
<script type="text/javascript">
document.write(Math.round(0.60) + "<br />");
document.write(Math.round(0.50) + "<br />");
document.write(Math.round(0.49) + "<br />");
document.write(Math.round(-4.40) + "<br />");
document.write(Math.round(-4.60));
</script>
</body>
</html>
5. El método max() devuelve el valor más alto
Sintaxis Math.max(x,y,z,...,n)
<html>
<head>
<title>Ejemplo</title>
</head>
<body>
<script type=”text/javascript">
document.write(Math.max(5,10) + "<br />");
document.write(Math.max(0,150,30,20,38) + "<br />");
document.write(Math.max(-5,10) + "<br />");
document.write(Math.max(-5,-10) + "<br />");
document.write(Math.max(1.5,2.5));
</script>
</body>
</html>
6. Información del navegador
<html>
<body>
<script type="text/javascript">
document.write("Browser CodeName: " + navigator.appCodeName);
document.write("<br /><br />");
document.write("Browser Name: " + navigator.appName);
document.write("<br /><br />");
document.write("Browser Version: " + navigator.appVersion);
document.write("<br /><br />");
document.write("Cookies Enabled: " + navigator.cookieEnabled);
document.write("<br /><br />");
document.write("Platform: " + navigator.platform);
document.write("<br /><br />");
document.write("User-agent header: " + navigator.userAgent);
</script>
</body>
</html>
7. Arrays
En JavaScript las propiedades de un objeto y los arrays están relacionados de la siguiente manera:
var empleado_1 = new Array();
empleado_1[0] = "Pedro";
empleado_1[1] = “26”;
empleado_1[2] = "Programador";
var empleado_1 = new Array("Pedro",”26”, "Programador");
o
var empleado_1 = ["Pedro",”26”, "Programador"];
Y también se produce la siguiente equivalencia:
Vamos a ver un ejemplo para la creación de un menú de usuario:
<HTML>
<HEAD>
<TITLE>Menu de usuario</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!-//DEFINE METODO PARA VER LA INFORMACION
function verInfo() {
document.write("<H1>Perfil del empleado: " + this.nombre + "</H1><HR><PRE>")
document.writeln("Numero de empleado: " + this.numero)
document.writeln("Edad: " + this.edad)
document.writeln("Puesto: " + this.puesto)
document.write("</PRE>")
}
//DEFINE METODO PARA OBTENER LA INFORMACION
function obtenerInfo() {
var menu = "1. Salir/n2. Nombre/n3. Edad/n4. Puesto"
var eleccion = prompt(menu, "0")
if (eleccion != null) {
if ((eleccion < 0) || (eleccion > 4)) {
alert ("Eleccion incorrecta.")
this.obtenerInfo()
} else {
if (eleccion != "0") {
this[eleccion - 1] = prompt("Introduzca informacion","")
this.obtenerInfo()
}
}
}
//DEFINE OBJETO
function empleado() {
this.nombre = ""
this.edad = 0
this.puesto = 0
this.verInfo = verInfo
this.obtenerInfo = obtenerInfo
}
empleadoNuevo = new empleado()
//-->
</SCRIPT>
</HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!-empleadoNuevo.obtenerInfo()
empleadoNuevo.verInfo()
//-->
</SCRIPT>
</BODY>
</HTML>
Referencias
-
http://www.quirksmode.org/dom/w3c_cssom.html
http://www.w3schools.com/js/default.asp
Descargar