Javascript de Wikilibros
-
Upload
no-tampoco -
Category
Documents
-
view
231 -
download
0
description
Transcript of Javascript de Wikilibros
javascriptwikilibrosndice general1 Programacin en JavaScript
11.1 ndice de contenido . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . 11.2 Autores . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . 12 Introduccin 32.1 Qu podemos hacer con JavaScript?.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32.2 Caractersticas de JavaScript . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . 33 Variables 53.1 Tipos de
datos en JavaScript . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 53.2 Declaracin de variables . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53.3 Operar con variables . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . 63.4 Arrays (Matrices) . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . 64 Control 85 Condicionales 95.1 If . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 95.2 Switch. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95.3
Operadores lgicos y relacionales . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 106 Bucles 116.1 For . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 116.1.1 Modicacin de la variable de control
dentro del bucle . . . . . . . . . . . . . . . . . . . 126.2 Bucles
anidados . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 126.3 Bucles innitos . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . 126.4 For sobre listas . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . 136.5 While . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 137 Funciones 157.1 Qu son las funciones?. .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . 157.2 Funciones con parmetros . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . 167.3 Devolucin de
datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 167.4 Funciones recursivas . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17iii
NDICE GENERAL8 FuncionesJS 188.1 Mostrar ventana de conrmacin
(aceptar o cancelar) . . . . . . . . . . . . . . . . . . . . . . .
. 188.2 Abrir una ventana nueva . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . 188.3 Cambiar la URL
actual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 188.4 Imprimir una pgina . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198.5
Cambiar el tamao de la ventana actual . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 198.6 Avanzar a una posicin
especca de la ventana . . . . . . . . . . . . . . . . . . . . . . .
. . . . 198.7 Retrasar la ejecucin del programa durante un tiempo
determinado . . . . . . . . . . . . . . . . . 198.8 Cambiar una
imagen por otra . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 199 OOP 209.1 Creacin de funciones miembro .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2110ClasesJS 2310.1Clase Array . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 2310.2Clase
Date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 2410.3Clase Math . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . 2410.4Clase String . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . 2411Formularios
2711.1Gestin del formulario de datos . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . 2712Cmo escribir cdigo en
JavaScript 3012.1Los comentarios . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . 3112.2Los
nombres de las variables . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 3113Operadores en JavaScript
3214Ejemplos de cdigo 3314.1Caso 1: Cmo conseguir que un enlace
gane o pierda el foco de entrada. . . . . . . . . . . . . . . .
3314.2Caso 2: seleccionar el texto de un cuadro de texto y darle el
foco. . . . . . . . . . . . . . . . . . . 3314.3Caso 3: obtener y
cambiar la URL de un formulario. . . . . . . . . . . . . . . . . .
. . . . . . . . 3314.4Caso 4: como actualizar dos iframes al mismo
tiempo. . . . . . . . . . . . . . . . . . . . . . . . . 3414.5Caso
5: conocer los datos del navegador. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 3414.6Caso 6: conocer los datos
relacionados con la pantalla. . . . . . . . . . . . . . . . . . . .
. . . . . 3414.7Caso 7: refrescar el contenido de una pgina. . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . 3414.8Caso 8:
Generar un reloj a intervalos de un segundo. . . . . . . . . . . .
. . . . . . . . . . . . . . 3414.9Caso 9: Generar otro reloj, fecha
y hora a intervalos de un segundo. . . . . . . . . . . . . . . . .
. 3514.10Caso 10: Manejando el canvas para grcos web. . . . . . . .
. . . . . . . . . . . . . . . . . . . . 3514.11Caso 11: Utilizando
la consola de depuracin. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . 3514.12Texto e imgenes de origen, colaboradores y
licencias . . . . . . . . . . . . . . . . . . . . . . . . 3614.12.1
Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 3614.12.2 Imgenes . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3614.12.3 Licencia de contenido . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 36Captulo 1Programacin en
JavaScriptProgramacin en JavaScript1.1 ndice de contenido1.
Introduccin2. Las variables en JavaScript3. Sentencias de
control(a) Condicionales(b) Bucles4. Funciones5. Funciones en
JavaScript6. Clases y objetos7. Clases predeterminadas en
JavaScript8. Gestin de formularios9. APNDICE A. Cmo escribir cdigo
en JavaScript10. APNDICE B. Operadores en JavaScript11. APNDICE C.
Ejemplos de cdigo12. APNDICE D. Palabras reservadasPuedes encontrar
todo el texto del libro en una sola pgina, ideal para imprimir o
guardar en el disco duro.1.2 AutoresSi introduces algn cambio en
este libro, aade tu nombre aqu:JULIAN DAVID DELGADO. Actualizacin
de artculos. 15 de Febrero de 2015.Mario Vera Aguirrejuan
madariaga12 CAPTULO 1. PROGRAMACIN EN JAVASCRIPTMarcos Legido
Hernndez2006-05-25, Kausario -> ejemplo 7, correccin
window.location.reload();"2006-12-06, Control -> Bucles,
correccin En otros bucles existen bucles -> En otros lenguajes
de progra-macin existen bucles2007-03-01, Rjarl -> Apendice C,
ejemplos 8 y 9, Arregle el 8 y aad un 9 ejemplo. A
disfrutar!.2008-04-04, DMike -> Bucles, correccin Iteraccin
-> Iteracin ; Dinen si el bucle est en condicionesde ejecutarse
o no -> Deciden si el bucle se ejecuta o no.2008 - 05 - 21,
Icondor -> En Devolucin de datos": If. En el ejemplo del uso del
If hay una sentencia que diceif(1) que, como se puede probar,
arroja el mensaje puesto con alert. Sin embargo en el comentario
respecto alejemplo, se dice lo contrario. Si se cambia por if(0) o
if(3) el ejemplo estara bien. Ms completo podra seraadirle un else
para que diga que en esta instruccin no es true.2010 - 01 - 11,
EArizon -> Ejemplos de uso del canvas en Javascript2011-05-18,
rbarahona -> Correccin de enlaces en los mens de navegacin.
Correccin del texto en variosapartados.11/01/2015, Pablo Ivn G.
Soto -> Correccin Ortogrca.Captulo 2IntroduccinEl JavaScript es
un lenguaje de programacin ampliamente utilizado en el mundo del
desarrollo web por ser muy ver-stil y potente, tanto para la
realizacin de pequeas tareas como para la gestin de complejas
aplicaciones. Adems,ha saltado el mbito de la web, y tambin podemos
encontrarlo en otros entornos, como es el lenguaje ActionScriptde
Macromedia, que acompaa al sistema Flash.JavaScript es un lenguaje
interpretado que, al contrario de las aplicaciones normales, que
son ejecutadas por el siste-ma operativo, es ejecutado por el
navegador que utilizamos para ver las pginas. Eso hace que podamos
desarrollaraplicaciones de muy diverso tipo, desde generadores de
HTML, comprobadores de formularios, etc..., hasta progra-mas que
gestionen las capas de una pgina. Pueden desarrollarse incluso
aplicaciones que permitan poder tener capasen una pgina como si
fueran ventanas, y dar la sensacin de estar trabajando con una
aplicacin con interfaz deventanas.JavaScript no es el nico lenguaje
que podemos encontrar en la web. Tambin tenemos a su gran
contrincante: Vi-sual Basic Script. Este lenguaje, desarrollado por
Microsoft, est basado en el lenguaje Basic de esta empresa,
perodesgraciadamente slo puede utilizarse en el navegador Internet
Explorer. Si queremos que nuestras pginas dinmi-cas puedan ser
vistas desde cualquier navegador y sistema operativo, la eleccin ms
adecuada es sin lugar a dudasJavaScript.2.1 Qu podemos hacer con
JavaScript?Pginas dinmicas (DHTML)Comprobacin de datos
(Formularios)Uso de los elementos de la pgina webIntercambiar
informacin entre pginas web en distintas ventanasManipulacin de
grcos, texto, etc...Comunicacin con plug-ins: Flash, Java,
Shockwave, etc...2.2 Caractersticas de JavaScriptJavaScript
comparte muchos elementos con otros lenguajes de alto nivel. Hay
que tener en cuenta que este lenguajees muy semejante a otros como
C, Java o PHP, tanto en su formato como en su sintaxis, aunque por
supuesto tienesus propias caractersticas denitorias.JavaScript es
un lenguaje que diferencia entre maysculas y minsculas, por lo que
si escribimos alguna expresinen minsculas, deberemos mantener esa
expresin en minsculas a lo largo de todo el programa. Si escribimos
esamisma expresin en maysculas, ser una expresin diferente a la
primera. Esto es as en la mayora de los lenguajesde este tipo, como
PHP.34 CAPTULO 2. INTRODUCCINOtra caracterstica es que podemos
encerrar las expresiones que escribamos con una serie de caracteres
especiales.Estos caracteres se denominan operadores y sirven tanto
para encerrar expresiones como para realizar trabajos conellas,
como operaciones matemticas o de texto. Los operadores que permiten
encerrar expresiones deben abrirsesiempre. '(', '{' y '[' y deben
cerrarse con sus correspondientes ')', '}' y ']',
respectivamente.Como JavaScript es un lenguaje de formato libre,
podemos escribir las lneas de cdigo de la forma que
consideremosmejor, aunque por supuesto debemos escribir siempre de
la forma correcta. Por ejemplo, podemos escribir las lneascon un
nmero variable de espacios:variable = hola"; variable="hola";
variable ="hola"; variable= hola ;Esto signica que podemos aadir
tabuladores al inicio de la lnea para justicar los prrafos de
cdigo. Tambinpodemos romper las lneas de texto si son demasiado
largas:document.write(Muy \ buenas);Pero no podemos hacer
esto:document.write \ (Muy buenas);Slo podemos romper cadenas de
texto, no instrucciones.En ocasiones tenemos que escribir algunos
caracteres especiales llamados de escape, porque en ocasiones hay
queutilizar algunos caracteres no imprimibles, como por
ejemplo:document.write (T y yo somos \"programadores\".);Podemos
ver que al introducir comillas dobles dentro de la cadena de
caracteres, debemos aadir la barra invertida'\' para escapar las
propias comillas, aunque esta misma expresin se poda haber escrito
as:document.write (T y yo somos 'programadores.);Otro aspecto
importante de JavaScript es la necesidad o no de utilizar el punto
y coma ';' al nal de las instrucciones.Este operador slo sirve para
delimitar las instrucciones, pero aunque su uso es obligatorio en
la mayora de loslenguajes, es opcional en JavaScript. Si usamos
este operador, podemos incluir varias sentencias en la misma lnea
decdigo, y si no lo usamos, slo podemos escribir una sentencia cada
vez. De todas formas, aconsejamos usar el puntoy coma porque en
otros lenguajes como PHP o Java, este operador es
obligatorio.Captulo 3VariablesEn un programa JavaScript nos podemos
encontrar con dos elementos bsicos: cdigo y datos. La parte del
cdigoes la que nos permite hacer cosas dentro de la pgina web, y la
parte de datos es la que dene el estado de la pginaweb en un
momento determinado. Los datos de un programa se guardan dentro de
variables.Qu es una variable? Una variable es como una caja: dentro
de una caja nosotros podemos guardar cosas. Slo queen las variables
de JavaScript la caja slo puede guardar una sola cosa a la vez. Y
por qu se las llama variables?Se las denomina as porque su
contenido puede cambiar en cualquier momento durante el desarrollo
del programa.De esta forma, una variable en JavaScript puede
contener distintas cosas segn donde se encuentre en el
programa:nmeros, letras, etc...3.1 Tipos de datos en
JavaScriptExisten cuatro tipos bsicos:Nmeros (enteros, decimales,
etc.).Cadenas de caracteres.Valores lgicos (True y False).Objetos
(una ventana, un texto, un formulario, etc.).3.2 Declaracin de
variablesA continuacin aparece un ejemplo de declaracin de una
variable en JavaScript:var miVar = 1234;Aqu hemos denido una
variable numrica con un valor entero. Pero tambin podramos denir un
nmero condecimales:var miVar = 12.34;Como podemos ver, la nueva
variable usa el operador . (punto) para distinguir entre la parte
entera y la parte decimal.Esto es importante, porque no podemos
usar la coma como hacemos en Espaa.Si queremos denir una cadena de
caracteres, lo podemos hacer de la siguiente manera:var miCadena =
'Hola, mundo';// o bien:var miCadena = Hola, mundo";Aqu vemos que
podemos usar los dos tipos de comillas para crear cadenas de
caracteres, y ser muy til cuandotrabajemos con ello (podemos
incluso combinarlas dentro de la misma cadena).56 CAPTULO 3.
VARIABLESTambin podemos crear variables con valores lgicos. Eso
signica que la variable podr tener slo dos valores:verdad o
mentira.var miVar = true;Los valores admitidos para este tipo de
variables son true y false. Este tipo de variables nos vendrn muy
bien paracrear condiciones y como valor para devolver en funciones,
que veremos ms adelante.Y por ltimo tenemos un tipo de dato
especial: los objetos. Y qu son los objetos? Son cosas que podemos
usaren nuestro programa para representar entidades. Esto lo
entenderemos muy fcilmente con unos ejemplos.Estamos rodeados de
objetos: mesas, libros, monitores, ratones, cuadros, etc... Algunos
son ms simples y otros sonms complicados. Podemos manipular todos
ellos segn sus caractersticas y su forma de interactuar con el
entornodonde estn. Por ejemplo, una mesa sabemos que tiene cuatro
patas, una tabla lisa, y que es de un color o varios colores.Es
decir, que podemos determinar una mesa por sus propiedades o
atributos. Pero adems, con la mesa podemos hacercosas: podemos
poner cosas encima, podemos usarla para comer o leer y a veces
podemos colgar cosas de ellas, porejemplo en un revistero. Todo eso
son mtodos o comportamientos que la mesa tiene para interactuar con
el resto desu entorno.Pues bien, podemos decir que los objetos en
JavaScript son muy parecidos: tienen propiedades (datos) y
mtodos(cdigo). Podemos crear y usar objetos para manejar elementos
del navegador web: una ventana del navegador es unobjeto window,
una pgina HTML es un objeto document, y una imagen es un objeto de
tipo Image. Es fcil darsecuenta de que los objetos son de un
determinado tipo: un objeto mesa, un objeto ventana, un objeto
ratn, etc... Todoslos objetos de un mismo tipo tienen
caractersticas semejantes, aunque luego cada objeto tiene
propiedades con valoresdistintos dependiendo de cada caso. As, dos
mesas puede tener color marrn o azul, pero las dos seguirn
teniendopatas, que pueden ser 4 5, depende... En JavaScript, los
objetos son muy importantes, como vamos a comprobar enel siguiente
captulo, que trata de los arrays (matrices) y las sentencias de
control.3.3 Operar con variablesComo ya estudiamos en el captulo
anterior, en JavaScript podemos denir unos elementos llamados
variables que nospermiten almacenar datos de distintos tipos.
Naturalmente, nosotros podemos usar esos datos en nuestros
programasy, como ya se indic entonces, podemos incluso variar esos
datos manteniendo la variable donde los depositamos. Aesta operacin
se le llama modicar la variable, y es una de las bases de la
programacin moderna.Las variables podemos usarlas en multitud de
situaciones, al mostrar datos, al enviarlos y recibirlos, en
expresionesy llamadas a funciones... Podemos tratar con variables
para almacenar los datos que vamos a usar a lo largo delprograma,
tanto globalmente en toda la aplicacion como de forma exclusiva con
las funciones que creemos, comoveremos en el captulo
correspondiente.var numero = 1; numero = numero + 2; numero += 3;El
resultado nal de esta operacin sera que la variable numero ser
igual a 6. En la primera lnea lo que hemoshecho es declarar la
variable numero con el valor inicial 1. Despues, hemos incrementado
el valor de la variable conla misma variable, sumndole 2, y
posteriormente hemos vuelto a incrementar la variable sumndole 3
por medio deloperador tipogrco +=. Los operadores se encuentran en
el primer apndice del curso.Sin embargo, surge un pequeo problema
cuando tenemos que tratar con cantidades mayores de datos. Las
variablescomo tales slo nos permiten gestionar un dato cada una de
ellas, con lo que cuando tenemos que gestionar gruposmayores de
datos, se hace realmente complicado. Miremos el siguiente ejemplo,
en el que denimos unos nombres:var nombre1 = 'pepe'; var nombre2 =
'too'; var nombre3 = 'mari'; var nombre4 = 'lucas; var nombre5 =
'sonia';var nombre6 = 'ruth'; var nombre7 = 'tete';Si ahora
quisiramos listar estos datos (ms adelante veremos cmo), tendramos
que referirnos a cada variable enconcreto, con lo que tenemos
pululando por nuestro programa siete variables a las que ser difcil
referirnos de unaforma genrica (por ejemplo, como estudiaremos ms
adelante, para listarlos dinmicamente en un formulario).
Pararesolver este problema tenemos una solucin: los arrays
(matrices).3.4 Arrays (Matrices)Las matrices son variables que
contienen un objeto de tipo Array. Podemos denir una matriz de la
siguiente manera:3.4. ARRAYS (MATRICES) 7var matriz = new
Array();De esta forma, hemos creado una matriz vaca que puede
contener un numero ilimitado de elementos, tantos comonos permita
el sistema donde se ejecuta. Las matrices vienen a ser como cajas
que en vez de contener una sola cosa,contienen muchas, como si
pudiramos dividir la caja en compartimentos en los cuales pudiramos
ir depositandocosas.Adems, podemos crear matrices con una dimensin,
es decir, que podemos hacer que la matriz se inicie con unnmero de
elementos determinado:var matriz = new Array(15);Con esta
instruccin, lo que hemos hecho es crear una matriz de quince
elementos. Pero ahora lo interesante es sabercmo llamar a esos
elementos, ya que si creamos la matriz, pero no sabemos operar con
ella, no sirve para mucho,no? La forma de acceder a un elemento de
la matriz es la siguiente:elemento = matriz[1];En este ejemplo, la
variable elemento contendr el valor del elemento 1 de la matriz. Es
lo que se llama ndice de lamatriz, e identica a cualquiera de los
elementos de la matriz. Hay que jarse en que utilizamos los
corchetes "[]"para sealar un elemento de la matriz. El primer
elemento de la matriz es el de ndice 0, no el de ndice 1. As,
parael anterior ejemplo de una matriz de 15 elementos, el ltimo
elemento posible es el 14.De la misma forma, podemos dar un valor a
cualquiera de los elementos de la matriz:matriz[5] = hola;Hemos
asignado el valor hola al elemento 5 de la matriz. Los elementos de
una matriz pueden contener cualquier tipode dato, y se pueden
cambiar en cualquier parte del programa, al igual que ocurre con
las variables.Y si queremos saber cuntos datos tenemos en la
matriz? Como dijimos antes, las matrices son objetos de tipoArray,
y los objetos pueden tener atributos (datos) y funciones (cdigo).
El atributo que debemos usar con matriceses length:longitud =
matriz.length;De esta forma, podemos saber cuantos elementos tiene
la matriz. Recordad que como el primer ndice es 0, el ltimoelemento
ser siempre matriz.length - 1.Si necesitamos que la matriz contenga
ms elementos, podemos redimensionar la matriz aplicndole un nuevo
objetode matriz:matriz = new Array(longitud que queramos);Sin
embargo, perderemos todos los elementos que tuviramos
anteriormente.Captulo 4ControlUna vez que nos sabemos manejar con
variables y matrices, que son los datos de nuestros programas,
debemosaprender a crear cdigo, que es lo que hace que nuestro
programa funcione.Hasta ahora hemos visto cmo manejar los datos del
programa, pero slo con variables no podemos manejar unprograma.
Necesitamos escribir cdigo fuente que nos permita conseguir que el
programa haga cosas. Normalmentelos programas tienen un ujo de
ejecucin: se ejecuta lnea a lnea, interpretndolas y comprobando el
resultado de laejecucin. Pero a veces eso no es suciente. A veces
tenemos que controlar lo que hace el programa,
permitindonosejecutar un cdigo u otro dependiendo de las
circunstancias, o bien repetir el mismo cdigo varias veces segn
unascondiciones concretas.Cuando nos levantamos por la maana,
miramos por la ventana para decidir qu ropa nos ponemos. Decidimos
entreuna camisa blanca o un jersey azul dependiendo de si hace fro
o no:Si hace fro -> me pongo el jersey. Si hace calor -> me
pongo la camisa.8Captulo 5Condicionales5.1 IfEn un programa podemos
realizar el mismo tipo de decisiones gracias a la instruccin if:if
(condicin) { cdigo_A } else { cdigo_B }Veamos lo que tenemos aqu.
Primero, comprobamos la condicin en la que vamos a basar nuestra
decisin (veremosms adelante cmo crear condiciones). Si la condicin
es vlida (si es verdadera), se ejecutar el primer bloque decdigo
que est entre llaves ({}); si no, se ejecutar el siguiente bloque
de cdigo, el que se encuentra debajo de lapalabra else. Es decir,
si la condicin es verdadera, ejecutamos cdigo_A, y si no,
cdigo_B.De esta forma, podemos tomar decisiones simples que nos
permiten cambiar el cdigo que ejecuta el navegador, deforma que
podemos controlar su ejecucin fcilmente. Un ejemplo es este:var
edad = 18; if (edad >= 18) { alert(Eres mayor de edad); } else {
alert(Eres menor de edad); }Primero denimos la variable edad con el
valor numrico 18. Despus comprobamos si el sujeto es o no mayor
deedad leyendo el valor de la variable: si edad es mayor o igual
que 18, entonces le decimos que es mayor de edad; sino, le decimos
que es menor de edad.alert es una funcin de Javascript que nos
permite mostrar un mensaje en pantalla.Pero, qu ocurre cuando
queremos hacer varias comprobaciones al mismo tiempo? Entonces
podemos usar la ins-truccin else if.if (edad > 18) {
alert(Tienes ms de 18 aos); } else if (edad == 18) { alert(Tienes
18 aos); } else { alert(Tienesmenos de 18 aos); }De esta forma,
podemos extender las condiciones todo lo que queramos para cubrir
todos los casos necesarios. Hayque destacar que todas las
condiciones son sucesivas y que slo se ejecuta una de ellas. Adems,
el ltimo else es elque se ejecuta en el caso de que ninguno de los
if anteriores sea vlido.5.2 SwitchHemos visto cmo gracias a if-else
podemos decidir qu hacer en determinadas situaciones. Pero a veces
slo querre-mos decidir entre unos valores, y ejecutar cdigo
dependiendo de los posibles valores de una variable o devueltos
poruna funcin. Para no ensuciar tanto el codigo usando muchas
sentencias if podemos usar la sentencia switch-case:switch
(variable) { case valor1: // codigo para valor 1 break; case
valor2: // codigo para valor 2 break; case valor3:case valor4: case
valor5: // codigo para valor 3, valor 4 y valor 5 break; default:
// cdigo si no es ninguno de losanteriores }En este ejemplo,
comprobamos varios valores de la variable variable, de forma que
cada uno de ellos permite ejecutarun cdigo diferente dependiendo de
la situacin. Ahora bien, si nos jamos en valor3, valor4 y valor5,
comprobamosque slo se ejecutar el cdigo que aparece bajo valor5,
porque los otros valores estn vacos, pero tambin porque notienen
una clusula break. Esta palabra reservada corta la ejecucin del
cdigo Javascript en el punto en que aparece,910 CAPTULO 5.
CONDICIONALESsaliendo del bloque de cdigo en el que se encuentra.
Esto tambin nos servir, por ejemplo, cuando veamos bucles.Con esto,
comprobamos que switch nos puede ayudar a ejecutar cdigo de forma
condicional, pero sin las complicadasoperaciones que debemos
realizar en if. Sin embargo, switch no puede nunca sustituir a if,
situacin que a la inversas ocurre.5.3 Operadores lgicos y
relacionalesPara crear condiciones, debemos usar dos elementos
nuevos: los operadores lgicos y los operadores relacionales.Los
operadores lgicos son 3:Y los relacionales son:Podemos crear
condiciones simples usando los operadores relacionales, y despus
formar condiciones ms complejasjuntando otras ms simples usando los
operadores lgicos. Por ejemplo:if (edad > 6 && edad <
12) alert(Eres un nio); else if (edad >= 12 && edad <
18) alert(Eres un adolescente);else if (edad >= 18
&&edad < 31) alert(Eres un joven); else if (edad >=
31 &&edad < 60) alert(Eres un adulto);else if (edad
>= 60 alert (Eres un adulto mayor); else alert (Tu debes de ser
un beb no mayor de 6 aos);Aqu hemos anidado varias condiciones para
poder mostrar mensajes dependiendo de la situacin en que nos
en-contremos. Podemos ver cmo es posible tomar decisiones ms
complejas que las que veamos al principio del temajuntando varias
condiciones por medio de los operadores lgicos. Debemos usar
&& (AND lgico) cuando queramosque la resolucin de la
condicin se encuentre incluida en las dos condiciones que
indicamos. Debemos usar || (ORlgico) cuando queramos que la
resolucin de la condicin no se incluya en las condiciones que
usamos. As, cuandodecimos que (edad >= 31 || edad 8.2 Abrir una
ventana nuevafunctionopen_win() {
window.open("http://www.google.es","nueva,"toolbar=yes,location=yes,
directories=no, status=no, menubar=yes, scrollbars=yes,
resizable=no, copyhistory=yes, width=400,height=400); } El primer
parmetro deopen es la direccin que queremos mostrar en la ventana.
El segundo es el nombre quequeremos darle a la ventana (y que
podemos usar, por ejemplo, en el atributo target de los enlaces).
El tercer y ltimoparmetro nos permite denir el aspecto de la
ventana segn los datos que le indicamos.8.3 Cambiar la URL actualEl
siguiente ejemplo nos muestra el uso de location para conseguir la
direccin de la pgina actual en la que nosencontramos o bien ir a
una pgina diferente:functionactual_location() { alert(location); }
function cambiar_location(){
window.location="http://www.google.es/"; } 8.4 Imprimir una pgina
function printpage() { window.print(); } 8.5 Cambiar el tamao de la
ventana actualfunctionresizeWindow() { window.resizeBy(100,100) }
SCROLLSCROLLSCROLLSCROLLSCROLLSCROLLSCROLLSCROLL
SCROLLSCROLLSCROLLSCROLLSCROLLSCROLLSCROLLSCROLL
SCROLLSCROLLSCROLLSCROLLSCROLLSCROLLSCROLLSCROLL
SCROLLSCROLLSCROLLSCROLLSCROLLSCROLLSCROLLSCROLL
SCROLLSCROLLSCROLLSCROLLSCROLLSCROLLSCROLLSCROLL
SCROLLSCROLLSCROLLSCROLLSCROLLSCROLLSCROLLSCROLL
SCROLLSCROLLSCROLLSCROLLSCROLLSCROLLSCROLLSCROLL
SCROLLSCROLLSCROLLSCROLLSCROLLSCROLLSCROLLSCROLL
8.7 Retrasar la ejecucin del programa durante un tiempo determinado
function timeout() { setTimeout(alert('Esta ventana aparece
unsegundo despus de que hayas pulsado el botn')", 1000) } // tambin
se puede en forma de vector: //...agName('body')[0]; pero no es
compatible con Opera. varcapa = document.createElement('div'); //
Divisin al vuelo var texto = document.createTextNode(this.texto);
// Tex-to contenido en div al vuelo // Establecer atributos de
divisin: capa.setAttribute('id', this.id);
capa.setAttribute('style','background-color:#f7f7f7; width:100px;
border:#000000 2px solid;'); // Reconstruir el rbol DOM:
capa.appendChild(texto);body.appendChild(capa); } catch(e) {
alert(e.name + " - " + e.message); } } } // ]]> ");
document.write(famname.reverse() + "
"); document.write(famname.push(Ola,"Jon) + "
");document.write(famname.pop() + "
"); document.write(famname.shift() + "
"); Estudiemos el cdigo. Despus de crear la matriz, utilizamos
algunas funciones y propiedades.length sirve para conocer la
cantidad de elementos que contiene la matriz propiamente dicha.join
permite unir todos los elementos separados por una cdena de
caracteres que pasamos como parmetro,en este caso, "..reverse
posiciona los elementos actuales de forma inversa.push nos permite
aadir un nuevo elemento dentro de la matriz (en realidad, podemos
aadir cualquier cantidadde ellos).pop extrae el ltimo elemento de
la matriz y lo devuelve.shift extrae y devuelve el primer elemento
de la lista.Si queremos ordenar los elementos de una matriz,
podemos usar la funcin miembro sort para realizar esta
operacin.Pero la ordenacin realizada es lexicogrca, es decir, que
se ordenarn alfabticamente. Si queremos realizar unaordenacin
nmerica, podemos crear una funcin de comparacin como veremos en el
siguiente ejemplo: Nota: Si no usamos funcin de comparacin para
denir el orden, la matriz se ordenar siemprealfabticamente. 500
vendr antes que 7, pero en una ordenacin numrica, 7 viene antes que
500. Este ejemplomuestra como usar la funcion de comparacin - que
ordenar correctamente los elementos tanto en una matriz nu-mrica
como de cadenas. array1 = new Array(Rojo,"Verde,"Azul); array2= new
Array(70,"9,"800); array3 = new Array(50,10,2,300); array4 = new
Array(70,"8,"850,30,10,5,400);functioncompareNum(a, b) { return
a-b; } document.write(Ordenado: " +array1.sort());
document.write("
");document.write(Ordenado sin compareNum: " +array2.sort());
document.write("
"); document.write(Ordenadocon compareNum: " +
array2.sort(compareNum)); document.write("
"); document.write(Ordenado sincompareNum: " +array3.sort());
document.write("
"); document.write(Ordenado con compareNum: "
+array3.sort(compareNum));document.write("
"); document.write(Ordenado sin compareNum: " +array4.sort());
document.write("
");document.write(Ordenado con compareNum: " +
array4.sort(compareNum)); Como podemos apreciar en el cdigo, slo
las llamadas a sort que tienen como parmetro la funcin de
comparacincompareNum han sido ordenadas numricamente.2324 CAPTULO
10. CLASESJS10.2 Clase DateEsta clase permite denir una fecha y
hora. Tiene una buena cantidad de funciones y aqu vamos a estudiar
algunasde las ms interesantes.var d =newDate();
document.write(d.getDate());
document.write(".);document.write(d.getMonth() +1);
document.write(".); document.write(d.getFullYear()); Este ejemplo
construye la fecha actual mediante los mtodos getDate, getMonth y
getFullYear. El valor base degetMonth es 0 (Enero). En los
siguientes ejemplos veremos como adaptar el objeto a la fecha que
nosotros queremos.En el siguiente ejemplo extraeremos la hora
actual:var d =newDate(); document.write(d.getHours());
document.write(".);document.write(d.getMinutes());
document.write(".); document.write(d.getSeconds()); La dinmica de
este ejemplo es muy parecida al anterior, pero en este caso usamos
getHours, getMinutes y getSe-conds. var d =new Date();
d.setFullYear(1990); document.write(d); Este ejemplo muestra cmo
modicar el ao, con setFullYear, aunque tambin podemos cambiar otras
partes de lafecha y la hora, con setMonth, setDate (para el da),
setHours, setMinutes y setSeconds. En vez de setFullYear,que tiene
como parmetro un ao con todas sus cifras, podemos usar tambin
setYear, que slo necesita las dosltimas cifras del ao (de 00 a 99).
Algo a tener en cuenta es que con esto no cambiamos ningn parmetro
de lafecha y hora del sistema, si no del objeto Date
exclusivamente.En el siguiente ejemplo veremos como mostrar los das
de la semana: var d = newDate(); var weekday = newArray(Domingo,
Lunes,Martes, Miercoles, Jueves, Viernes, Sbado);
document.write(Hoy es " + weekday[d.getDay()]); Como vemos, podemos
crear una matriz con los das de la semana (comenzando por el
domingo, dado que se toma lareferencia anglosajona), y referenciar
a sus elementos con la funcin getDay. Tambin podemos usar otras
funcionescomo getMonth, getYear, getHours, getMinutes y
getSeconds.10.3 Clase MathEsta clase contiene funciones y
propiedades relacionadas con las
matemticas.document.write(Math.round(7.25) +"
"); document.write(Math.random()+ "
"); no = Math.random()*10; document.write(Math.round(no) + "
"); document.write(Math.max(2,4) +"
"); document.write(Math.min(2,4) + "
"); La funcin round permite redondear una cifra de coma otante a un
entero. random genera un nmero aleatorio, osi queremos que este
nmero se encuentre entre 1 y 10, lo podemos hacer como en la
siguiente linea, generando unnmero aleatorio y multiplicndolo por
el mximo que queremos. max y min devuelven el nmero mximo y
mnimoentre dos dados, respectivamente. Asu vez, esta clase contiene
tambin funciones trigonomtricas como cos, sin, tan,acos, asin,
atan. Podemos contar con otras funciones de coma otante como ceil,
log, y sqrt (raiz cuadrada). Comopuede comprobarse tambin, no hace
falta crear un objeto para usar esta clase (se las denomina clases
estticas).10.4 Clase StringEsta clase permite la manipulacin de
cadenas de texto. Toda cadena de texto que creamos es un objeto de
esta clase,as que podemos hacer manipulaciones de muy diverso tipo.
var str = "JavaScript es malo!"; document.write("" + str +"");
document.write(str.length +"
"); document.write("" +str.fontcolor() +""); document.write(""+
str.fontcolor('red') + ""); document.write("" +
str.fontcolor('blue') + ""); document.write(""
+str.fontcolor('green') + ""); var pos = str.indexOf(Script); if
(pos >= 0) { document.write(Script encontra-10.4. CLASE STRING
25do en la posicin: "); document.write(pos + "
"); } else { document.write("Script no encontrado!" + "
");} document.write(str.substr(2,6)); document.write("
"); document.write(str.substring(2,6) + "
"); do-cument.write(str.toLowerCase()); document.write("
"); document.write(str.toUpperCase() + "
"); En este ejemplo podemos ver varios ejemplos del funcionamiento
de las funciones de cadena que podemos encontraren la clase String.
La propiedadlength, como en Array, nos devuelve, en este caso, el
nmero de caracteres dela cadena de texto. fontcolor es una funcin
que permite generar cadenas de distintos colores (nombres o
valoreshexadecimales). indexOf es una funcin que devuelve la
posicin de una cadena dentro de otra (partiendo de cero).Si es
igual a 1, es que no se ha localizado. substr y substring funcionan
extrayendo subcadenas de otras, pero confuncionamientos diferentes.
substr nos devuelve una subcadena que comienza en el primer
parmetro, devolviendoel nmero de caracteres especicado en el
segundo parmetro. substring devuelve una subcadena que se
comprendeentre el primer y segundo parmetro (esto es, contando
siempre con un ndice base de 0). Por ltimo, toLowerCasey
toUpperCase devuelven la misma cadena pero convertida a minsculas y
maysculas, respectivamente.A continuacin se muestra una lista muy
til con los mtodos y propiedades propios de la clase String, pero
cuidado!estos metodos dependen de que el navegador los implemente,
o sea que no tienen porque funcionar en todos losnavegadores y/o
versiones.PropiedadeslengthprototypeconstructorMtodosanchor()big()blink()bold()charAt()charCodeAt()concat()xed()fontcolor()fontsize()fromCharCode()indexOf()italics()lastIndexOf()link()localeCompare()match()replace()search()26
CAPTULO 10.
CLASESJSslice()small()split()strike()sub()substr()substring()sup()toLocaleLowerCase()toLocaleUpperCase()toLowerCase()toString()toUpperCase()valueOf()Captulo
11FormulariosUna de las utilidades ms interesantes de JavaScript es
la posibilidad de comprobar y gestionar formularios de formaque
podamos incluso evitar que se enve un formulario si los datos no
son correctos. Primero estudiaremos comocontrolar la gestin y el
envo de datos, y despus nos sumergiremos en la comprobacin
propiamente dicha de losdatos.11.1 Gestin del formulario de
datosCuando tenemos un formulario de datos que queremos enviar a un
servidor para su correspondiente gestin por partede una aplicacin
CGI, resulta muy interesante en ocasiones tener la posibilidad de
comprobar la integridad de losdatos antes de ser enviados al
servidor. Adems, tener la posibilidad de evitar el envo del
formulario nos permite unmayor control sobre su gestin. Veamos el
siguiente ejemplo: Tu nombre:
Tu edad: Podemos apreciar en el formulario que hemos aadido un
atributo nuevo, el evento onsubmit, que permite llamar auna funcin
creada por nosotros para comprobar los datos que vamos a enviar. La
expresinreturn comprobar()har que el contenido de onsubmit sea true
o false, dependiendo de lo que devuelva la funcion comprobar(). Si
elvalor es true, los datos se enviarn al servidor, y si es false,
se retendr la ejecucin del formulario. A continuacinestudiaremos
una posible funcin que podemos usar en este caso: function
comprobar() { var nombre = document.formu.nombre.value; var edad
=document.formu.edad.value; if (nombre.length > 30) { alert(Tu
nombre es demasiado grande. Redcelo.); returnfalse; } if (edad
>= 20 && edad 30) { alert(Tu nombre es demasiado grande.
Red-celo.); return false; } if (edad >= 20 && edad Vamos
a estudiar una serie de casos particulares que se alejan de alguna
forma de la forma de obtener valores quehemos visto en el ejemplo
anterior, o alternativas sobre como comprobar los datos. En el
siguiente ejemplo vemoscomo capturar el contenido de una serie de
radios, ya que podemos usar una funcin especca para comprobarque
efectivamente hemos pulsado uno de los radios": function
check(browser) { document.formu.respuesta.value = brow-ser; } Cmo
quieres tu ca-f?
Con crema
Con azcar
Como podemos ver, hay varias cosas a tener consideracin: los
checkboxes, al tener el mismo nombre (podran tenerlodistinto, pero
este ejemplo nos permite ver esta posibilidad), se agrupan en forma
de matriz, y por lo tanto, debemosrecorrer la lista de controles
para acceder a sus contenidos. En nuestro caso, accedemos a la
propiedad checked, quenos permite saber si el checkbox est pulsado
(true) o no (false). En la variable txt acumulamos los valores de
loscheckboxes (a los que accedemos por medio del correspondiente
ndice, como ya sabemos), y despus mostramos elresultado en la linea
de texto que hay ms abajo. Al introducir el texto en la propiedad
value, cambiamos tambin elcontenido del campo de texto.En el
siguiente ejemplo veremos como averiguar el dato pulsado en una
lista de datos:function cual() {
txt=document.formu.lista.options[document.formu.lista.selectedIndex].text;document.formu.favorito.value=txt;
} Internet ExplorerNetscapeOpera
Tu navegador favorito es: La
expresindocument.formu.lista.options[document.formu.lista.selectedIndex]11.1.
GESTIN DEL FORMULARIO DE DATOS 29nos permite acceder a una de las
opciones (es una matriz) de la lista de datos. En este caso, como
las opciones notienen valor, podemos acceder a la cadena de
caracteres de la opcin por medio de la propiedad text. En
concreto,podemos conocer qu elemento se ha seleccionado por medio
de la propiedad selectedIndex del control de lista.Slo un detalle
ms a tener en cuenta: por un defecto de los navegadores, no es
posible elegir sin ms el elementoactualmente seleccionado en la
lista, ya que no producir ningn evento. Hay que tener esto en
consideracin paraevitar posibles problemas a la hora de trabajar
con las listas. Un truco para subsanar este inconveniente es poner
unprimer option en blanco ( ) que ser el que aparezca al cargarse
el select.Captulo 12Cmo escribir cdigo en JavaScriptEn este apndice
aprenderemos a insertar cdigo JavaScript en nuestras pginas. Como
sabemos, las pginas web secomponen de cdigo HTML (HyperText Markup
Language), y para incluir el cdigo Javascript utilizamos una
marcaHTML, . Esta marca puede encontrarse en cualquier parte de la
pgina web, tanto en el como en el. Aunque es la forma ms corta
existen otras formas de denir cdigo script. Por ejemplo . W3C
recomienda utilizar el tag . Esta es una pagina web var mi_numero =
1; functioncalcula(numero) { return numero + mi_numero; }
document.write(calcula(1)); Este ejemplo mostrar un numero '2' en
el navegador.Adems, podemos especicarle el lenguaje en el que
queremos programar. Existen otros lenguajes para navegadorcomo
Visual Basic Script y PerlScript, pero nosotros usamos Javascript
porque es universal: todos los navegadores losoportan, mientras que
los otros dependen de la plataforma donde nos encontremos. Para
indicar el lenguaje, podemosescribir lo siguiente: De esta forma
indicamos el lenguaje a usar. Esto es necesario en el caso de que
tengamos que usar lenguajes combi-nados en la misma pgina, como en
el caso de que queramos enlazar una pelcula ash con nuestra pagina
web.Otra forma de escribir Javascript en una pgina web es
utilizando los eventos de las etiquetas HTML. Las etiquetasHTML
tienen varios eventos que responden a determinados sucesos, como
por ejemplo el click del ratn, el envode un formulario, o la carga
de una pgina. Por ejemplo, si queremos que aparezca un mensaje al
cargar la pginaque estamos viendo, haramos algo como esto: texto
Esto har que aparezca un mensaje nada ms cargar la pgina web.
Tambin podemos aplicar estos eventos comoenlaces, botones, imgenes,
etc... Prcticamente cualquier etiqueta HTML soporta eventos como
onclick, que permiteresponder a una pulsacin del botn izquierdo del
ratn.Google En este ejemplo vemos cmo al mismo tiempo que vamos a
Google, el navegador nos avisa de lo que vamos a hacerantes de que
ocurra. Este tipo de acciones se pueden usar para comprobar
formularios antes de enviar los datos(e incluso, evitar su envo si
no son correctos), comprobar dnde pinchamos en una imagen, etc...,
observando loscambios en los objetos Javascript.Y una ltima manera
de ejecutar cdigo Javascript es adjuntando un archivo al cdigo
principal, de tal forma quepodemos agrupar las funciones, clases y
dems en un archivo, y reutilizar ese archivo tantas veces como
queramosposteriormente. Un ejemplo puede ser
ste:funciones.js:function saludo(nombre) { alert('Hola, ' +
nombre); }saludo.html:3012.1. LOS COMENTARIOS 31 Esta es una pagina
web 14.2 Caso 2: seleccionar el texto de un cuadro de texto y darle
el foco.function setfocus() { document.forms[0].txt.select();
document.forms[0].txt.focus();} 3334 CAPTULO 14. EJEMPLOS DE
CDIGOEn este ejemplo podemos ver otra forma de utilizar los
formularios en el cdigo JavaScript.14.4 Caso 4: como actualizar dos
iframes al mismo tiempo. function twoframes() {
document.all(frame1).src="frame_c.htm";document.all(frame2).src="frame_d.htm";
}
Este ejemplo actualiza el contenido del cuadrode texto cada segundo. Pulsa Empezar para iniciar la funcin setInterval. Pulsa Parar para detener el tiempo conla funcin clearInterval.
14.9. CASO 9: GENERAR OTRO RELOJ, FECHA Y HORA A INTERVALOS DE UN SEGUNDO. 35Estdiese bien este ejemplo. La variable intval contiene un valor que setInterval genera, y con el que podremos detenerel intervalo usndolo en la llamada a clearInterval. Especialmente interesante es la funcin start_clock, que formateala hora para su visualizacin.14.9 Caso 9: Generar otro reloj, fecha y hora a intervalos de un segundo. Proforma de Computadora function relojFecha(){ var mydate=newDate();varyear=mydate.getYear(); if (year < 1000)year+=1900; var day=mydate.getDay(); var month=mydate.getMonth(); vardaym=mydate.getDate(); if (daym