Javascript S
Javascript S
Javascript S
JavaScript, al igual que Flash, Visual Basic Script, es una de las mltiples
maneras que han surgido para extender las capacidades del lenguaje HTML
(lenguaje para el diseo de pginas de Internet). Al ser la ms sencilla, es
por el momento la ms extendida. JavaScript no es un lenguaje de
programacin propiamente dicho como C, C++, Delphi, etc. Es un lenguaje
script u orientado a documento, como pueden ser los lenguajes de macros
que tienen muchos procesadores de texto y planillas de clculo. No se
puede desarrollar un programa con JavaScript que se ejecute fuera de un
Navegador, aunque en este momento comienza a expandirse a otras reas
como la programacin en el servidor con Node.js
JavaScript es un lenguaje interpretado que se embebe en una pgina web
HTML. Un lenguaje interpretado significa que a las instrucciones las analiza
y procesa el navegador en el momento que deben ser ejecutadas.
</body>
</html>
</script>
Variables.
Las variables son nombres que ponemos a los lugares donde almacenamos
la informacin. En JavaScript, deben comenzar por una letra o un
subrayado (_), pudiendo haber adems dgitos entre los dems caracteres.
Una variable no puede tener el mismo nombre de una palabra clave del
lenguaje.
Una variable se define anteponindole la palabra clave var:
var dia;
se pueden declarar varias variables en una misma lnea:
var dia, mes, anio;
a una variable se la puede definir e inmediatamente inicializarla con un
valor:
var edad=20;
o en su defecto en dos pasos:
var edad;
edad=20;
2
Debemos elegir nombres de variables representativos. En el ejemplo
anterior los nombres dia, mes, anio son lo suficientemente claros para
darnos una idea acabada sobre su contenido, una mala eleccin de
nombres hubiera sido llamarlas a,b y c. Podemos darle otros buenos
nombres. Otros no son tan representativos, por ejemplo d, m, a.
Posiblemente cuando estemos resolviendo un problema dicho nombre nos
recuerde que almacenamos el dia, pero pasado un tiempo lo olvidaramos.
3
no deben ir encerradas entre comillas. Cada instruccin finaliza con un
punto y coma.
Las variables de tipo boolean pueden almacenar solo dos valores: true o
false.
El resultado al visualizar la pgina debe ser 4 lneas similares a stas:
Juan
10
1.92
false
Para la entrada de datos por teclado tenemos la funcin prompt. Cada vez
que necesitamos ingresar un dato con esta funcin, aparece una ventana
donde cargamos el valor. Hay otras formas ms sofisticadas para la entrada
de datos en una pgina HTML, pero para el aprendizaje de los conceptos
bsicos de JavaScript nos resultar ms prctica esta funcin.
Para ver su funcionamiento analicemos este ejemplo:
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
4
varnombre;
varedad;
nombre=prompt('Ingresesunombre:','');
edad=prompt('Ingresesuedad:','');
document.write('Hola');
document.write(nombre);
document.write('asiquetienes');
document.write(edad);
document.write('aos');
</script>
</body>
</html>
La sintaxis de la funcin prompt es:
<variable que recibe el dato>=prompt(<mensaje a mostrar en la
ventana>,<valor
inicial a mostrar en la ventana>);
La funcin prompt tiene dos parmetros: uno es el mensaje y el otro el valor
inicial a mostrar.
PROBLEMAS
6
que debe abonar el comprador (Ingresar por teclado un precio sin
decimales, es decir un entero: 2, 7, 90 etc.)
Problema1.
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
varlado;
lado=prompt('Ingresemedidadellado:','');
varperimetro;
perimetro=lado*4;
document.write('Supermetroes:');
document.write(perimetro);
</script>
</body>
</html>
7
En una estructura CONDICIONAL SIMPLE por el camino del verdadero hay
actividades y por el camino del falso no hay actividades. Por el camino del
verdadero pueden existir varias operaciones, entradas y salidas, inclusive
ya veremos que puede haber otras estructuras condicionales.
Ejemplo: Realizar la carga de una nota de un alumno. Mostrar un mensaje
que aprob si tiene una nota mayor o igual a 4:
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
varnombre;
varnota;
nombre=prompt('Ingresenombre:','');
nota=prompt('Ingresesunota:','');
if(nota>=4)
{
document.write(nombre+'estaaprobadocon
un'+nota);
}
</script>
</body>
</html>
Aparece la instruccin if en el lenguaje JavaScript. La condicin debe ir
entre parntesis. Si la condicin se verifica verdadera se ejecuta todas las
instrucciones que se encuentran encerradas entre las llaves de apertura y
cerrado seguidas al if.
Para disponer condiciones en un if podemos utilizar alguno de los siguientes
operadores relacionales:
> mayor
>= mayor o igual
< menor
<= menor o igual
!= distinto
== igual
Siempre debemos tener en cuenta que en la condicin del if deben
intervenir una variable un operador relacional y otra variable o valor fijo.
Otra cosa que hemos incorporado es el operador + para cadenas de
caracteres:
document.write(nombre+' esta aprobado con un '+nota);
8
Con esto hacemos ms corto la cantidad de lneas de nuestro programa,
recordemos que venamos hacindolo de la siguiente forma:
document.write(nombre);
document.write(' esta aprobado con un ');
document.write(nota);
PROBLEMAS
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
varnota1;
varnota2;
varnota3;
nota1=prompt('Ingreseprimernota','');
nota1=parseInt(nota1);
nota2=prompt('Ingresesegundanota','');
nota2=parseInt(nota2);
nota3=prompt('Ingresetercernota','');
nota3=parseInt(nota3);
varsuma;
9
suma=nota1+nota2+nota3;
varpromedio;
promedio=suma/3;
if(promedio>=7)
{
document.write('Promocionado');
}
</script>
</body>
</html>
Problema2.
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
varclave1;
varclave2;
clave1=prompt('Ingreseunaclave:','');
clave2=prompt('Repitaelingresodelaclave:','');
if(clave1==clave2)
{
document.write('Ingresolasdosclavesiguales');
}
</script>
</body>
</html>
10
Operadores lgicos && (y) en las estructuras condicionales.
11
{
document.write('elmayoresel'+num3);
}
}
</script>
</body>
</html>
Podemos leerla de la siguiente forma:
Si el contenido de la variable num1 es mayor al contenido de la variable
num2 Y si el contenido de la variable num1 es mayor al contenido de la
variable num3 entonces la CONDICION COMPUESTA resulta Verdadera.
Si una de las condiciones simples da falso, la CONDICION COMPUESTA
da Falso y contina por la rama del falso.
Es decir que se mostrar el contenido de num1 si y slo si num1>num2 y
num1>num3.
En caso de ser Falsa la condicin de la rama del falso, analizamos el
contenido de num2 y num3 para ver cual tiene un valor mayor.
En esta segunda estructura condicional, al haber una condicin simple, no
se requieren operadores lgicos.
PROBLEMAS
12
5. De un operario se conoce su sueldo y los aos de
antigedad. Se pide confeccionar un programa que lea los datos
de entrada e informe
a) Si el sueldo es inferior a 500 y su antigedad es igual o
superior a 10 aos, otorgarle un aumento del 20 %, mostrar el
sueldo a pagar.
b) Si el sueldo es inferior a 500 pero su antigedad es menor a
10 aos, otorgarle un aumento de 5 %.
c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la
pgina sin cambios.
Problema1.
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
vardia,mes,ao;
dia=prompt('Ingreseda','');
dia=parseInt(dia);
mes=prompt('Ingresemes','');
mes=parseInt(mes);
ao=prompt('Ingreseao','');
ao=parseInt(ao);
if(dia==25&&mes==12)
{
document.write('Lafechaingresadacorrespondea
navidad');
}
else
{
document.write('Lafechaingresadanocorrespondea
navidad');
}
</script>
13
</body>
</html>
Problema2.
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
varnum1,num2,num3;
num1=prompt('Ingreseprimervalor','');
num1=parseInt(num1);
num2=prompt('Ingresesegundovalor','');
num2=parseInt(num2);
num3=prompt('Ingresetercervalor','');
num3=parseInt(num3);
if(num1==num2&&num1==num3)
{
varresu=(num1+num2)*num3;
document.write('Lasumadelosdosprimerosvalores
ymultiplicadodichasumaporelterceroes:'+resu);
}
</script>
</body>
</html>
Problema3.
14
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
varnum1,num2,num3;
num1=prompt('Ingreseprimervalor','');
num1=parseInt(num1);
num2=prompt('Ingresesegundovalor','');
num2=parseInt(num2);
num3=prompt('Ingresetercervalor','');
num3=parseInt(num3);
if(num1<10&&num2<10&&num3<10)
{
document.write('Todoslosnmerosingresadosson
menoresa10.');
}
</script>
</body>
</html>
Problema4.
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
varx,y;
x=prompt('Ingresecoordenadax','');
x=parseInt(x);
15
y=prompt('Ingresecoordenaday','');
y=parseInt(y);
if(x>0&&y>0)
{
document.write('Seencuentraenelprimer
cuadrante');
}
else
{
if(x<0&&y>0)
{
document.write('Seencuentraenelsegundo
cuadrante');
}
else
{
if(x<0&&y<0)
{
document.write('Seencuentraeneltercer
cuadrante');
}
else
{
if(x>0&&y<0)
{
document.write('Seencuentraenelcuarto
cuadrante');
}
else
{
document.write('Seencuentrasobreuneje');
}
}
}
}
</script>
</body>
16
</html>
Problema5.
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
varsueldo,antiguedad;
sueldo=prompt('Ingreseelsueldodelempleado','');
sueldo=parseInt(sueldo);
antiguedad=prompt('Ingreselaantigedaddel
empleado','');
antiguedad=parseInt(antiguedad);
if(sueldo<500&&antiguedad>=10)
{
document.write('Seleotorgaunaumentodel20%');
document.write('<br>');
varsueldototal=sueldo+sueldo*0.20;
document.write('Elsueldototales:'+sueldototal);
}
else
{
if(sueldo<500&&antiguedad<10)
{
document.write('Seleotorgaunaumentodel5%');
document.write('<br>');
varsueldototal=sueldo+sueldo*0.05;
document.write('Elsueldototal
es:'+sueldototal);
}
else
{
17
document.write('Elsueldoquedasin
cambios:'+sueldo);
}
}
</script>
</body>
</html>
Ejemplo: Se carga una fecha (da, mes y ao) por teclado. Mostrar un
mensaje si corresponde al primer trimestre del ao (enero, febrero o marzo).
Cargar por teclado el valor numrico del da, mes y ao por separado.
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
vardia,mes,ao;
dia=prompt('Ingreseda:','');
mes=prompt('Ingresemes:','');
ao=prompt('Ingreseao:','');
dia=parseInt(dia);
mes=parseInt(mes);
ao=parseInt(ao);
if(mes==1||mes==2||mes==3)
{
18
document.write('correspondealprimer
trimestredelao.');
}
</script>
</body>
</html>
La carga de una fecha se hace por partes, ingresamos las variables dia,
mes y ao.
PROBLEMA
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
varnum1,num2,num3;
num1=prompt('Ingreseprimervalor','');
num1=parseInt(num1);
num2=prompt('Ingresesegundovalor','');
num2=parseInt(num2);
num3=prompt('Ingresetercervalor','');
num3=parseInt(num3);
if(num1<10||num2<10||num3<10)
{
document.write('Algunodelosnmerossonmenoresa
diez');
19
}
</script>
</body>
</html>
20
Ejemplo: Realizar un programa que imprima en pantalla los nmeros del 1 al
100.
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
varx;
x=1;
while(x<=100)
{
document.write(x);
document.write('<br>');
x=x+1;
}
</script>
</body>
</html>
Para que se impriman los nmeros, uno en cada lnea, agregamos la marca
HTML de <br>.
Es muy importante analizar este programa:
La primera operacin inicializa la variable x en 1, seguidamente comienza la
estructura repetitiva while y disponemos la siguiente condicin ( x <= 100),
se lee MIENTRAS la variable x sea menor o igual a 100.
Al ejecutarse la condicin, retorna VERDADERO, porque el contenido de x
(1) es menor o igual a 100.
Al ser la condicin verdadera se ejecuta el bloque de instrucciones que
contiene la estructura while. El bloque de instrucciones contiene dos salidas
21
al documento y una operacin. Se imprime el contenido de x y
seguidamente se incrementa la variable x en uno.
22
constantes durante la ejecucin del programa. El contador x nos indica en
cada momento la cantidad de valores impresos en la pgina.
Importante: Podemos observar que el bloque repetitivo puede no ejecutarse
si la condicin retorna falso la primera vez.
La variable x debe estar inicializada con algn valor antes que se ejecute la
operacin x = x + 1.
Probemos algunas modificaciones de este programa y veamos qu cambios
se deberan hacer para:
1 - Imprimir los nmeros del 1 al 500.
2 - Imprimir los nmeros del 50 al 100.
3 - Imprimir los nmeros del -50 al 0.
4 - Imprimir los nmeros del 2 al 100 pero de 2 en 2 (2,4,6,8 ....100).
<html>
<head>
</head>
<body>
<script type="text/javascript">
var x;
x=1;
while (x<=100)
{
document.write(x);
document.write('<br>');
x=x+1;
}
</script>
</body>
</html>
PROBLEMA
23
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
varserie;
serie=11;
varx;
x=1;
while(x<=25)
{
document.write(serie);
document.write('<br>');
x=x+1;
serie=serie+11;
}
</script>
</body>
</html>
Problema2.
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
varmultiplo8;
multiplo8=8;
while(multiplo8<=500)
{
document.write(multiplo8);
document.write('<br>');
24
multiplo8=multiplo8+8;
}
</script>
</body>
</html>
Por ltimo, hay que decir que la ejecucin de la sentencia break dentro de
cualquier parte del bucle provoca la salida inmediata del mismo.
Sintaxis:
for (<Inicializacin> ; <Condicin> ; <Incremento o Decremento>)
{
<Instrucciones>
}
Esta estructura repetitiva tiene tres argumentos: variable de inicializacin,
condicin y variable de incremento o decremento.
Funcionamiento:
- Primero se ejecuta por nica vez el primer argumento .
Por lo general se inicializa una variable.
- El segundo paso es evaluar la (Condicin), en caso de ser
verdadera se ejecuta el bloque,
en caso contrario contina el programa.
- El tercer paso es la ejecucin de las instrucciones.
25
- El cuarto paso es ejecutar el tercer argumento (Incremento o
Decremento).
- Luego se repiten sucesivamente del Segundo al Cuarto Paso.
Este tipo de estructura repetitiva se utiliza generalmente cuando sabemos la
cantidad de veces que deseamos que se repita el bloque.
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
varf;
for(f=1;f<=10;f++)
{
document.write(f+"");
}
</script>
</body>
</html>
Inicialmente f se la inicializa con 1. Como la condicin se verifica como
verdadera se ejecuta el bloque del for (en este caso mostramos el contenido
de la variable f y un espacio en blanco). Luego de ejecutar el bloque pasa al
tercer argumento del for (en este caso con el operador ++ se incrementa en
uno el contenido de la variable f, existe otro operador -- que decrementa en
uno una variable), hubiera sido lo mismo poner f=f+1 pero este otro
operador matemtico nos simplifica las cosas.
Importante: Tener en cuenta que no lleva punto y coma al final de los tres
argumentos del for. El disponer un punto y coma provoca un error lgico y
no sintctico, por lo que el navegador no avisar.
PROBLEMAS
26
1. Confeccionar un programa que lea 3 pares de datos, cada par
de datos corresponde a la medida de la base y la altura de un
tringulo. El programa deber informar:
a) De cada tringulo la medida de su base, su altura y su
superficie.
b) La cantidad de tringulos cuya superficie es mayor a 12.
2. Desarrollar un programa que solicite la carga de 10 nmeros
e imprima la suma de lo ltimos 5 valores ingresados.
27
b) Imprimir dichos promedios (promedio de cada turno).
c) Mostrar por pantalla un mensaje que indique cual de los tres
turnos tiene un promedio de edades mayor.
Problema1.
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
varf;
varbase;
varaltura;
varsuperficie;
varconta1=0;
for(f=1;f<=3;f++)
{
base=prompt('Ingreselabase:','');
base=parseInt(base);
altura=prompt('Ingreselaaltura:','');
altura=parseInt(altura);
superficie=base*altura/2;
if(superficie>12)
{
conta1++;
}
document.write('Tringulonro:'+f+'<br>');
document.write('Base:'+base+'<br>');
document.write('Altura:'+altura+'<br>');
document.write('Superficie:'+superficie+'<br>');
}
document.write('Cantidaddetringulosconsuperficie
mayora12:'+conta1);
</script>
28
</body>
</html>
Problema2.
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
//Desarrollarunprogramaquesolicitelacargade10
nmeroseimprimalasumadelo
//ltimos5valoresingresados.
varsuma=0;
varf;
varvalor;
for(f=1;f<=10;f++)
{
valor=prompt('Ingreseunnro:','');
valor=parseInt(valor);
if(f>5)
{
suma=suma+valor;
}
}
document.write('Lasumadelosltimoscincovalores
ingresadoses:'+suma);
</script>
</body>
</html>
29
Problema3.
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
//Desarrollarunprogramaquemuestrelatablade
multiplicardel5(del5al50).
vartabla=5;
varf=1;
for(f=1;f<=10;f++)
{
document.write(tabla+'');
tabla=tabla+5;
}
</script>
</body>
</html>
Problema4.
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
/*Confeccionarunprogramaquepermitaingresarun
valordel1al10y
30
nosmuestrelatablademultiplicardelmismo(los
primeros12trminos)
Ejemplo:Siingreso3deberaparecerenpantallalos
valores3,6,9,hastael36.*/
vartabla;
varf;
varconta;
tabla=prompt('Ingreseunvalordel1al10:','');
tabla=parseInt(tabla);
conta=tabla;
for(f=1;f<=12;f++)
{
document.write(conta+'');
conta=conta+tabla;
}
</script>
</body>
</html>
Problema5.
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
/*Realizarunprogramaquelealosladosde4
tringulos,einformar:
a) Decadaunodeellos,qutipodetringuloes:
equiltero(tresladosiguales),issceles(dos
ladosiguales),oescaleno(ningnladoigual)
b) Cantidaddetringulosdecadatipo.
c) Tipodetringulodelquehaymenorcantidad.*/
31
varcant1=0;
varcant2=0;
varcant3=0;
varlado1;
varlado2;
varlado3;
varf;
for(f=1;f<=4;f++)
{
lado1=prompt('Ingreseprimerlado:','');
lado1=parseInt(lado1);
lado2=prompt('Ingresesegundolado:','');
lado2=parseInt(lado2);
lado3=prompt('Ingresetercerlado:','');
lado3=parseInt(lado3);
if(lado1==lado2&&lado1==lado3)
{
document.write('Tringuloequilatero.<br>');
cant1++;
}
else
{
if(lado1==lado2||lado1==lado3||lado2==lado3)
{
document.write('Tringuloissceles.<br>');
cant2++;
}
else
{
document.write('Tringuloescaleno.<br>');
cant3++;
}
}
}
document.write('<br>');
document.write('Cantidaddetringulos
equilteros:'+cant1+'<br>');
32
document.write('Cantidaddetringulos
issceles:'+cant2+'<br>');
document.write('Cantidaddetringulos
escalenos:'+cant3+'<br>');
if(cant1<cant2&&cant1<cant3)
{
document.write('Seingresaronmenostringulos
equilteros');
}
else
{
if(cant2<cant3)
{
document.write('Seingresaronmenostringulos
issceles');
}
else
{
document.write('Seingresaronmenostringulos
escalenos');
}
}
</script>
</body>
</html>
Problema6.
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
/*Escribirunprogramaquepidaingresarcoordenadas
33
(x,y)querepresentanpuntosenelplano.
Informarcuntospuntossehaningresadoenelprimer,
segundo,tercerycuartocuadrante.
Alcomenzarelprogramasepidequeseingresela
cantidaddepuntosaprocesar.*/
varcuad1=0;
varcuad2=0;
varcuad3=0;
varcuad4=0;
varx;
vary;
varf;
varcant;
cant=prompt('Cuantospuntosprocesar:','');
cant=parseInt(cant);
for(f=1;f<=cant;f++)
{
x=prompt('Ingresecoordenadax:','');
x=parseInt(x);
y=prompt('Ingresecoordenaday:','');
y=parseInt(y);
if(x>0&&y>0)
{
cuad1++;
}
else
{
if(x<0&&y>0)
{
cuad2++;
}
else
{
if(x<0&&y<0)
{
cuad3++;
}
34
else
{
if(x>0&&y<0)
{
cuad4++;
}
}
}
}
}
document.write('Cantidaddepuntosingresadosenel
primercuadrante:'+cuad1+'<br>');
document.write('Cantidaddepuntosingresadosenel
segundocuadrante:'+cuad2+'<br>');
document.write('Cantidaddepuntosingresadosenel
tercercuadrante:'+cuad3+'<br>');
document.write('Cantidaddepuntosingresadosenel
cuartocuadrante:'+cuad4+'<br>');
</script>
</body>
</html>
Problema7.
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
/*Serealizalacargade10valoresenterospor
teclado.Sedeseaconocer:
a) Lacantidaddevaloresnegativosingresados.
b) Lacantidaddevalorespositivosingresados.
35
c) Lacantidaddemltiplosde15.
d) Elvaloracumuladodelosnmerosingresadosque
sonpares.*/
varcantnegativos=0;
varcantpositivos=0;
varmult15=0;
varsumapares=0;
varf;
varvalor;
for(f=1;f<=10;f++)
{
valor=prompt('Ingreseunvalor:','');
valor=parseInt(valor);
if(valor<0)
{
cantnegativos++;
}
else
{
if(valor>0)
{
cantpositivos++;
}
}
if(valor%15==0&&valor!=0)
{
mult15++;
}
if(valor%2==0)
{
sumapares=sumapares+valor;
}
}
document.write('Cantidaddevalores
negativos:'+cantnegativos+'<br>');
document.write('Cantidaddevalores
positivos:'+cantpositivos+'<br>');
36
document.write('Cantidaddemltiplosde
15:'+mult15+'<br>');
document.write('Sumadelosvalorespares
ingresados:'+sumapares+'<br>');
</script>
</body>
</html>
Problema8.
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
/*Secuentaconlasiguienteinformacin:
Lasedadesde5estudiantesdelturnomaana.
Lasedadesde6estudiantesdelturnotarde.
Lasedadesde11estudiantesdelturnonoche.
Lasedadesdecadaestudiantedebeningresarsepor
teclado.
a)Obtenerelpromediodelasedadesdecadaturno
(trespromedios)
b)Imprimirdichospromedios(promediodecada
turno).
c)Mostrarporpantallaunmensajequeindiquecual
delos
tresturnostieneunpromediodeedadesmayor.*/
varsuma1=0;
varedad;
varf;
for(f=1;f<=5;f++)
37
{
edad=prompt('Edaddeestudiantedelturno
maana:','');
edad=parseInt(edad);
suma1=suma1+edad;
}
varsuma2=0;
for(f=1;f<=6;f++)
{
edad=prompt('Edaddeestudiantedelturno
tarde:','');
edad=parseInt(edad);
suma2=suma2+edad;
}
varsuma3=0;
for(f=1;f<=11;f++)
{
edad=prompt('Edaddeestudiantedelturno
noche:','');
edad=parseInt(edad);
suma3=suma3+edad;
}
varpromedio1=suma1/5;
varpromedio2=suma2/6;
varpromedio3=suma3/11;
document.write('Promediodeedadesdealumnosdel
turnomaana:'+promedio1+'<br>');
document.write('Promediodeedadesdealumnosdel
turnotarde:'+promedio2+'<br>');
document.write('Promediodeedadesdealumnosdel
turnonoche:'+promedio3+'<br>');
if(promedio1>promedio2&&promedio1>promedio3)
{
document.write('Elturnomaanatieneunpromedio
mayordeedades');
}
else
{
38
if(promedio2>promedio3)
{
document.write('Elturnotardetieneunpromedio
mayordeedades');
}
else
{
document.write('Elturnonochetieneunpromedio
mayordeedades');
}
}
</script>
</body>
</html>
39
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
varvalor;
do{
valor=prompt('Ingreseunvalorentre0y
999:','');
valor=parseInt(valor);
document.write('Elvalor'+valor+'tiene
');
if(valor<10)
{
document.write('Tiene1digitos');
}
else
{
if(valor<100)
{
document.write('Tiene2digitos');
}
else
{
document.write('Tiene3digitos');
}
}
document.write('<br>');
}while(valor!=0);
</script>
</body>
</html>
En este problema por lo menos se carga un valor. Si se carga un valor
menor a 10 se trata de un nmero de una cifra, si es mayor a 10 pero menor
40
a 100 se trata de un valor de dos dgitos, en caso contrario se trata de un
valor de tres dgitos. Este bloque se repite mientras se ingresa en la variable
'valor' un nmero distinto a 0.
PROBLEMAS
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
41
varvalor;
varsuma=0;
do{
valor=prompt('Ingreseunvalor(9999parafinalizar)','');
valor=parseInt(valor);
if(valor!=9999)
{
suma=suma+valor;
}
}while(valor!=9999);
document.write('Valoracumuladototal:'+suma);
document.write('<br>');
if(suma>0)
{
document.write('Elvaloracumuladoesmayoracero');
}
else
{
if(suma==0)
{
document.write('Elvaloracumuladoescero');
}
else
{
document.write('Elvaloracumuladoesmenoracero');
}
}
</script>
</body>
</html>
Problema2.
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
varnrocuenta;
varnombre;
varsaldo=0;
varacumula=0;
varsaldoacre=0;
do{
nrocuenta=prompt('Ingresenrodecuenta:','');
nrocuenta=parseInt(nrocuenta);
if(nrocuenta>=0)
{
42
nombre=prompt('Nombredelcliente:');
saldo=prompt('Saldoactual:','');
saldo=parseInt(saldo);
if(saldo>0)
{
saldoacre=saldoacre+saldo;
document.write(nombre+'tienesaldoacreedor<br>');
}
else
{
if(saldo<0)
{
document.write(nombre+'tienesaldodeudor<br>');
}
else
{
document.write(nombre+'tienesaldonulo<br>');
}
}
acumula=acumula+saldo;
}
}while(nrocuenta>0);
document.write('Sumatotaldesaldosacreedores:'+saldoacre);
</script>
</body>
</html>
Problema2.
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
vardocumento;
varedad;
vartotalpersonas=0;
varcantvarones=0;
varcantmujeres=0;
varcantvaronesgrandes=0;
do{
documento=prompt('Ingresenrodedocumento:','');
documento=parseInt(documento);
if(documento>0)
{
edad=prompt('Ingreselaedad:','');
43
edad=parseInt(edad);
sexo=prompt('Ingreseelsexo(masculino/femenino):','');
if(sexo=='masculino')
{
cantvarones=cantvarones+1;
if(edad>=16&&edad<=65)
{
cantvaronesgrandes=cantvaronesgrandes+1;
}
}
if(sexo=='femenino')
{
cantmujeres=cantmujeres+1;
}
totalpersonas=totalpersonas+1;
}
}while(documento!=0);
document.write('Totaldepersonascensadas:'+totalpersonas+'<br>');
document.write('Cantidaddevarones:'+cantvarones+'<br>');
document.write('Cantidaddemujeres:'+cantmujeres+'<br>');
document.write('Cantidaddevaronesentre16y65aos:
'+cantvaronesgrandes+'<br>');
</script>
</body>
</html>
Clase Array
<html>
<head>
</head>
<body>
44
<scripttype="text/javascript">
functioncargar(sueldos)
{
varf;
for(f=0;f<sueldos.length;f++)
{
varv;
v=prompt('Ingresesueldo:','');
sueldos[f]=parseInt(v);
}
}
functioncalcularGastos(sueldos)
{
vartotal=0;
varf;
for(f=0;f<sueldos.length;f++)
{
total=total+sueldos[f];
}
document.write('Listadodesueldos<br>');
for(f=0;f<sueldos.length;f++)
{
document.write(sueldos[f]+'<br>');
}
document.write('Totaldegastosen
sueldos:'+total);
}
varsueldos;
sueldos=newArray(5);
cargar(sueldos);
calcularGastos(sueldos);
</script>
45
</body>
</html>
Recordemos que el programa comienza a ejecutarse a partir de las lneas
que se encuentran fuera de la funciones:
var sueldos;
sueldos=new Array(5);
cargar(sueldos);
calcularGastos(sueldos);
Lo primero, definimos una variable y posteriormente creamos un objeto de
la clase Array, indicndole que queremos almacenar 5 valores.
Llamamos a la funcin cargar envindole el vector. En la funcin, a travs
de un ciclo for recorremos las distintas componentes del vector y
almacenamos valores enteros que ingresamos por teclado.
Para conocer el tamao del vector accedemos a la propiedad length de la
clase Array.
En la segunda funcin sumamos todas las componentes del vector,
imprimimos en la pgina los valores y el total de gastos.
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
functionmostrarFecha(meses,dias)
{
varnum;
num=prompt('Ingresenmerodemes:','');
num=parseInt(num);
document.write('Correspondeal
mes:'+meses[num1]);
document.write('<br>');
46
document.write('Tiene'+dias[num1]+'
das');
}
varmeses;
meses=newArray(12);
meses[0]='Enero';
meses[1]='Febrero';
meses[2]='Marzo';
meses[3]='Abril';
meses[4]='Mayo';
meses[5]='Junio';
meses[6]='Julio';
meses[7]='Agosto';
meses[8]='Septiembre';
meses[9]='Octubre';
meses[10]='Noviembre';
meses[11]='Diciembre';
vardias;
dias=newArray(12);
dias[0]=31;
dias[1]=28;
dias[2]=31;
dias[3]=30;
dias[4]=31;
dias[5]=30;
dias[6]=31;
dias[7]=31;
dias[8]=30;
dias[9]=31;
dias[10]=30;
dias[11]=31;
mostrarFecha(meses,dias);
47
</script>
</body>
</html>
En este problema definimos dos vectores, uno para almacenar los meses y
otro los das. Decimos que se trata de vectores paralelos porque en la
componente cero del vector meses almacenamos el string 'Enero' y en el
vector dias, la cantidad de das del mes de enero.
Es importante notar que cuando imprimimos, disponemos como subndice el
valor ingresado menos 1, esto debido a que normalmente el operador de
nuestro programa carga un valor comprendido entre 1 y 12. Recordar que
los vectores comienzan a numerarse a partir de la componente cero.
document.write('Corresponde al mes:'+meses[num-1]);
PROBLEMAS
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
functioncargar(vec)
48
{
varf;
for(f=0;f<vec.length;f++)
{
varvalor;
valor=prompt('Ingresecomponente:','');
vec[f]=parseInt(valor);
}
}
functionsumar(vec)
{
varf;
varsuma=0;
for(f=0;f<vec.length;f++)
{
suma=suma+vec[f];
}
document.write('Valoracumuladodelas
componentes:'+suma+'<br>');
}
functionsumarMayor36(vec)
{
varf;
varsuma=0;
for(f=0;f<vec.length;f++)
{
if(vec[f]>36)
{
suma=suma+vec[f];
}
}
document.write('Valoracumuladodelascomponentes
mayoresa36:'+suma+'<br>');
}
functioncantidadMayores50(vec)
{
varf;
varcant=0;
49
for(f=0;f<vec.length;f++)
{
if(vec[f]>50)
{
cant=cant+1;
}
}
document.write('Cantidaddecomponentesmayoresa
50:'+cant+'<br>');
}
varvec;
vec=newArray(8);
cargar(vec);
sumar(vec);
sumarMayor36(vec);
cantidadMayores50(vec);
</script>
</body>
</html>
Problema2.
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
functioncargarVectores(vec1,vec2)
{
varf;
for(f=0;f<vec1.length;f++)
{
varvalor;
valor=prompt('Ingresecomponentedelprimer
vector:','');
50
vec1[f]=parseInt(valor);
}
for(f=0;f<vec2.length;f++)
{
varvalor;
valor=prompt('Ingresecomponentedelsegundo
vector:','');
vec2[f]=parseInt(valor);
}
}
functionsumarVectores(vec1,vec2,vecsuma)
{
varf;
for(f=0;f<vecsuma.length;f++)
{
vecsuma[f]=vec1[f]+vec2[f];
}
}
functionimprimirVector(vecsuma)
{
varf;
for(f=0;f<vecsuma.length;f++)
{
document.write(vecsuma[f]+'');
}
}
varvec1;
vec1=newArray(5);
varvec2;
vec2=newArray(5);
varvecsuma;
vecsuma=newArray(5);
cargarVectores(vec1,vec2);
sumarVectores(vec1,vec2,vecsuma);
imprimirVector(vecsuma);
</script>
</body>
51
</html>
Formularios y Eventos.
<html>
<head>
52
</head>
<body>
<scripttype="text/javascript">
varcontador=0;
functionincrementar()
{
contador++;
alert('Elcontadorahoravale:'+contador);
}
</script>
<form>
<inputtype="button"onClick="incrementar()"
value="incrementar">
</form>
</body>
</html>
A los eventos de los objetos HTML se les asocia una funcin, dicha funcin
se ejecuta cuando se dispara el evento respectivo. En este caso cada vez
que presionamos el botn, se llama a la funcin incrementar, en la misma
incrementamos la variable contador en uno. Hay que tener en cuenta que a
la variable contador la definimos fuera de la funcin para que no se inicialice
cada vez que se dispara el evento.
La funcin alert crea una ventana que puede mostrar un mensaje.
PROBLEMA
<html>
<head>
53
</head>
<body>
<scripttype="text/javascript">
functionpresion1()
{
alert('Sepresionelbotn1');
}
functionpresion2()
{
alert('Sepresionelbotn2');
}
functionpresion3()
{
alert('Sepresionelbotn3');
}
</script>
<form>
<inputtype="button"onClick="presion1()"value="Boton
1">
<inputtype="button"onClick="presion2()"value="Boton
2">
<inputtype="button"onClick="presion3()"value="Boton
3">
</form>
</body>
</html>
Hasta ahora hemos visto como crear un formulario con controles de tipo
BUTTON. Agregamos un control de tipo TEXT (permite al operador cargar
caracteres por teclado).
Ahora veremos la importancia de definir un id a todo control de un
54
formulario.
Con un ejemplo veremos estos controles: Confeccionar un formulario que
permita ingresar el nombre y edad de una persona:
<html>
<head></head>
<body>
<scripttype="text/javascript">
functionmostrar()
{
var
nom=document.getElementById('nombre').value;
vared=document.getElementById('edad').value;
alert('Ingreselnombre:'+nom);
alert('Ylaedad:'+ed);
}
</script>
<form>
Ingresesunombre:
<inputtype="text"id="nombre"><br>
Ingresesuedad:
<inputtype="text"id="edad"><br>
<inputtype="button"value="Confirmar"
onClick="mostrar()">
</form>
</body>
</html>
En este problema tenemos cuatro controles: 1 FORM, 1 BUTTON, 2 TEXT.
El evento que se dispara al presionar el botn se llama mostrar.
La funcin 'mostrar' accede a los contenidos de los dos controles de tipo
TEXT:
var nom=document.getElementById('nombre').value;
var ed=document.getElementById('edad').value;
55
Para hacer ms clara la funcin guardamos en dos variables auxiliares los
contenidos de los controles de tipo TEXT.
La propiedad "id" es un identificar nico para cualquier marca HTML que
luego nos permite desde Javascript acceder a dicho elemento.
El mtodo getElementById nos retorna una referencia del objeto HTML que
le pasamos como parmetro. a partir de este objeto accedemos a la
propiedad value que almacena el valor ingresado por el operador en el
control TEXT.
Luego de extraer los valores ingresados por el operador los mostramos
utilizando la funcin alert:
var nom=document.getElementById('nombre').value;
var ed=document.getElementById('edad').value;
alert('Ingres el nombre:' + nom);
alert('Y la edad:' + ed);
PROBLEMAS
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
functioncalcularCubo()
{
varv=document.getElementById('num').value;
56
v=parseInt(v);
varcubo=v*v*v;
alert(cubo);
}
</script>
<form>
Ingreseunvalor:
<inputtype="text"id="num">
<br>
<inputtype="button"value="Calcularcubo"
onClick="calcularCubo()">
</form>
</body>
</html>
Problema2.
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
functionmostrarMayor()
{
varnum1=document.getElementById('num1').value;
varnum2=document.getElementById('num2').value;
num1=parseInt(num1);
num2=parseInt(num2);
if(num1>num2)
{
alert('Elmanores'+num1);
}
else
{
alert('Elmanores'+num2);
57
}
}
</script>
<form>
Ingreseprimervalor:
<inputtype="text"id="num1">
<br>
Ingresesegundovalor:
<inputtype="text"id="num2">
<br>
<inputtype="button"value="mostrarmayor"
onClick="mostrarMayor()">
</form>
</body>
</html>
Problema3.
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
functionconcatenar()
{
varnom=document.getElementById('nombre').value;
varape=document.getElementById('apellido').value;
document.getElementById('resultado').value=nom+ape;
}
</script>
<form>
Ingresenombre:
<inputtype="text"id="nombre">
<br>
Ingreseapellido:
58
<inputtype="text"id="apellido">
<br>
<inputtype="button"value="Concatenardatosingresados"
onClick="concatenar()">
<br>
<inputtype="text"id="resultado">
</form>
</body>
</html>
Control PASSWORD
Ejemplo: Codificar una pgina que permita ingresar una password y luego
muestre una ventana de alerta si tiene menos de 5 caracteres.
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
functionverificar()
{
var
clave=document.getElementById('clave').value;
if(clave.length<5)
{
59
alert('Laclavenopuedetenermenosde5
caracteres!!!');
}
else
{
alert('Largodeclavecorrecta');
}
}
</script>
<form>
Ingreseunaclave:
<inputtype="password"id="clave">
<br>
<inputtype="button"value="Confirmar"
onClick="verificar()">
</form>
</body>
</html>
En este problema debemos observar que cuando ingresamos caracteres
dentro del campo de edicin slo vemos asteriscos, pero realmente en
memoria se almacenan los caracteres tipeados. Si queremos mostrar los
caracteres ingresados debemos acceder mediante el mtodo
getElementById a la marca HTML clave:
var clave=document.getElementById('clave').value;
Normalmente, a este valor no lo mostraremos dentro de la pgina, sino se
perdera el objetivo de este control (ocultar los caracteres tipeados).
Si necesitamos saber la cantidad de caracteres que tiene un string
accedemos a la propiedad length que retorna la cantidad de caracteres.
if (clave.length<5)
PROBLEMA
60
o no (es muy comn solicitar al operador el ingreso de dos veces
de su clave para validar si las escribi correctamente, esto se hace
cuando se crea una password para el ingreso a un sitio o para el
cambio de una existente).
Tener en cuenta que podemos emplear el operador == para ver si
dos string son iguales.
Problema1.
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
functionverificar()
{
varclave1=document.getElementById('clave1').value;
varclave2=document.getElementById('clave2').value;
if(clave1==clave2)
{
alert('Lasdosclavesingresadassoniguales');
}
else
{
alert('Lasdosclavesingresadassondistintas');
}
}
</script>
<form>
Ingreseclave:
<inputtype="password"id="clave1">
<br>
Repitalaclave:
<inputtype="password"id="clave2">
<br>
<inputtype="button"value="Verificarclave"
onClick="verificar()">
</form>
61
</body>
</html>
Control SELECT
Este otro objeto visual que podemos disponer en un FORM permite realizar
la seleccin de un string de una lista y tener asociado al mismo un valor no
visible. El objetivo fundamental en JavaScript es determinar qu elemento
est seleccionado y qu valor tiene asociado. Esto lo hacemos cuando
ocurre el evento onChange.
<html>
<head>
</head>
<body>
62
<scripttype="text/javascript">
functioncambiarColor()
{
var
seleccion=document.getElementById('select1');
document.getElementById('text1').value=seleccio
n.selectedIndex;
document.getElementById('text2').value=seleccio
n.options[seleccion.selectedIndex].text;
document.getElementById('text3').value=seleccio
n.options[seleccion.selectedIndex].value;
}
</script>
<form>
<selectid="select1"
onChange="cambiarColor()">
<optionvalue="0xff0000">Rojo</option>
<optionvalue="0x00ff00">Verde</option>
<optionvalue="0x0000ff">Azul</option>
</select>
<br>
Nmerodendiceseleccionadodelobjeto
SELECT:<inputtype="text"id="text1"><br>
Textoseleccionado:<inputtype="text"
id="text2"><br>
Valorasociado:<inputtype="text"
id="text3"><br>
</form>
</body>
</html>
63
Se debe analizar en profundidad este problema para comprender
primeramente la creacin del objeto SELECT en HTML, y cmo acceder
luego a sus valores desde Javascript.
Es importante para el objeto SELECT definir qu funcin llamar cuando
ocurra un cambio: onChange="cambiarColor()".
Por cada opcin del objeto SELECT tenemos una lnea:
PROBLEMAS
64
A la cantidad de pizzas cargarla en un objeto de la clase TEXT y en
otro objeto de la clase TEXT mostrar el importe total a abonar.
4. Confeccionar una pgina que permita tomar un examen
mltiple choice. Se debe mostrar una pregunta y seguidamente un
objeto SELECT con las respuestas posibles. Al presionar un botn
mostrar la cantidad de respuestas correctas e incorrectas
(Disponer 4 preguntas y sus respectivos controles SELECT)
Problema1.
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
functionmostrarSeleccionPizza()
{
document.getElementById('mensaje').value=document.getEle
mentById('pizza').options[document.getElementById('pizza
').selectedIndex].text;
}
</script>
<form>
Pizzas:
<selectid="pizza"onChange="mostrarSeleccionPizza()">
<option>JamonyQueso</option>
<option>Muzzarella</option>
<option>Morrones</option>
</select>
<br>
<inputtype="text"id="mensaje">
</form>
</body>
</html>
65
Problema2.
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
functioncalcularPresupuesto()
{
varele1=document.getElementById('procesador')
varprecio1=ele1.options[ele1.selectedIndex].value;
varele2=document.getElementById('monitor')
varprecio2=ele2.options[ele2.selectedIndex].value;
varele3=document.getElementById('discoduro')
varprecio3=ele3.options[ele3.selectedIndex].value;
precio1=parseInt(precio1);
precio2=parseInt(precio2);
precio3=parseInt(precio3);
varsuma=precio1+precio2+precio3;
document.getElementById('resultado').value=suma;
}
</script>
<form>
Procesador:
<selectid="procesador">
<optionvalue="400">IntelI3</option>
<optionvalue="600">IntelI5</option>
<optionvalue="800">IntelI7</option>
</select>
<br>
Procesador:
<selectid="monitor">
<optionvalue="250">MonitorSamsung20'</option>
<optionvalue="350">MonitorSamsung22'</option>
<optionvalue="550">MonitorSamsung26'</option>
</select>
<br>
Discoduro:
66
<selectid="discoduro">
<optionvalue="300">DiscoDuro500Gb</option>
<optionvalue="440">DiscoDuro1Tb</option>
<optionvalue="500">DiscoDuro3Tb</option>
</select>
<br>
<inputtype="button"value="CalcularPresupuesto"
onClick="calcularPresupuesto()">
<br>
<inputtype="text"id="resultado">
</form>
</body>
</html>
Problema3.
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
functioncalcularPresupuesto()
{
varprecio=document.getElementById('pizza').value;
precio=parseInt(precio);
var
cantidad=document.getElementById('cantidad').value;
cantidad=parseInt(cantidad);
vartotal=precio*cantidad;
document.getElementById('resultado').value=total;
}
</script>
<form>
Seleccionelapizza:
<selectid="pizza">
67
<optionvalue="4">Queso</option>
<optionvalue="6">JamonyQueso</option>
<optionvalue="10">Especial</option>
</select>
<br>
Cantidaddepizzas:
<inputtype="text"id="cantidad">
<br>
<inputtype="button"value="Calcularcosto"
onClick="calcularPresupuesto()">
<br>
<inputtype="text"id="resultado">
</form>
</body>
</html>
Problema4.
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
functionverificar()
{
varcorrectas=0;
varele1=document.getElementById('pregunta1');
varele2=document.getElementById('pregunta2');
varele3=document.getElementById('pregunta3');
varele4=document.getElementById('pregunta4');
if(ele1.options[ele1.selectedIndex].value==3)
{
correctas++;
}
if(ele2.options[ele2.selectedIndex].value==1)
{
68
correctas++;
}
if(ele3.options[ele3.selectedIndex].value==2)
{
correctas++;
}
if(ele4.options[ele4.selectedIndex].value==2)
{
correctas++;
}
alert('Cantidadderespuestas
correctas:'+correctas);
}
</script>
<form>
Comosedicerojoeningles:<br>
<selectid="pregunta1">
<optionvalue="1">blue</option>
<optionvalue="2">green</option>
<optionvalue="3">red</option>
</select>
<br>
Comosediceventanaeningles:<br>
<selectid="pregunta2">
<optionvalue="1">window</option>
<optionvalue="2">door</option>
<optionvalue="3">bedroom</option>
</select>
<br>
Comosedicegatoeningles:<br>
<selectid="pregunta3">
<optionvalue="1">dog</option>
<optionvalue="2">cat</option>
<optionvalue="3">lion</option>
</select>
<br>
Comosedicehombreeningles:<br>
<selectid="pregunta4">
<optionvalue="1">women</option>
<optionvalue="2">man</option>
69
<optionvalue="3">child</option>
</select>
<br>
<inputtype="button"value="Controlar"
onClick="verificar()">
</form>
</body>
</html>
Control CHECKBOX
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
functioncontarSeleccionados()
{
varcant=0;
if
(document.getElementById('checkbox1').checked)
{
cant++;
}
70
if
(document.getElementById('checkbox2').checked)
{
cant++;
}
if
(document.getElementById('checkbox3').checked)
{
cant++;
}
if
(document.getElementById('checkbox4').checked)
{
cant++;
}
alert('Conoce'+cant+'lenguajes');
}
</script>
<form>
<inputtype="checkbox"
id="checkbox1">JavaScript
<br>
<inputtype="checkbox"id="checkbox2">PHP
<br>
<inputtype="checkbox"id="checkbox3">JSP
<br>
<inputtype="checkbox"id="checkbox4">VB.Net
<br>
<inputtype="button"value="Mostrar"
onClick="contarSeleccionados()">
</form>
</body>
</html>
71
Cuando se presiona el botn se llama a la funcin Javascript
contarSeleccionados(). En la misma verificamos uno a uno cada control
checkbox accediendo a la propiedad checked del elemento que almacena
true o false segn est o no seleccionado el control:
Disponemos un 'if' para cada checkbox:
if (document.getElementById('checkbox1').checked)
{
cant++;
}
Como la propiedad checked almacena un true o false podemos utilizar dicho
valor directamente como valor de la condicin en lugar de codificar:
if (document.getElementById('checkbox1').checked==true)
{
cant++;
}
Al contador 'cant' lo definimos e inicializamos en cero previo a los cuatro if.
Mostramos finalmente el resultado final.
PROBLEMA
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
functionverificar()
{
vardeportes='';
if(document.getElementById("checkbox1").checked)
{
deportes=deportes+'Ftbol';
}
if(document.getElementById("checkbox2").checked)
72
{
deportes=deportes+'Bsquet';
}
if(document.getElementById("checkbox3").checked)
{
deportes=deportes+'Tenis';
}
alert('Losdeportesseleccionadosson:'+deportes);
}
</script>
<form>
Seleccionelosdeportesquepractica:<br>
<inputtype="checkbox"id="checkbox1">Ftbol<br>
<inputtype="checkbox"id="checkbox2">Bsquet<br>
<inputtype="checkbox"id="checkbox3">Tenis<br>
<inputtype="button"value="Controlar"
onClick="verificar()">
</form>
</body>
</html>
Control RADIO
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
73
functionmostrarSeleccionado()
{
if
(document.getElementById('radio1').checked)
{
alert('notienesestudios');
}
if
(document.getElementById('radio2').checked)
{
alert('tienesestudiosprimarios');
}
if
(document.getElementById('radio3').checked)
{
alert('tienesestudiossecundarios');
}
if
(document.getElementById('radio4').checked)
{
alert('tienesestudiosuniversitarios');
}
}
</script>
<form>
<inputtype="radio"id="radio1"
name="estudios">Sinestudios
<br>
<inputtype="radio"id="radio2"
name="estudios">Primarios
<br>
<inputtype="radio"id="radio3"
name="estudios">Secundarios
74
<br>
<inputtype="radio"id="radio4"
name="estudios">Universitarios
<br>
<inputtype="button"value="Mostrar"
onClick="mostrarSeleccionado()">
</form>
</body>
</html>
Es importante notar que todos los objetos de tipo RADIO tienen definida la
propiedad name con el mismo valor (esto permite especificar que queremos
que los radios estn relacionados entre si)
Luego podemos acceder a cada elemento mediante el mtodo
getElementById para consultar la propiedad checked:
if (document.getElementById('radio1').checked)
{
alert('no tienes estudios');
}
Igual que el checkbox, la propiedad checked retorna true o false, segn est
o no seleccionado el control radio.
PROBLEMA
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
functionverificar()
{
75
if(document.getElementById('radio1').checked)
{
alert('Eresmayordeedadyporlotantopuede
ingresar');
}
if(document.getElementById('radio2').checked)
{
alert('Noeresmayordeedadyporlotantono
puedeingresar');
}
}
</script>
<form>
Esmayordeedad?
<br>
<inputtype="radio"id="radio1"name="edad">si<br>
<inputtype="radio"id="radio2"name="edad">no<br>
<inputtype="button"value="Verificar"
onClick="verificar()">
</form>
</body>
</html>
Control TEXTAREA
<html>
<head>
76
</head>
<body>
<scripttype="text/javascript">
functioncontrolarCaracteres()
{
if
(document.getElementById('curriculum').value.le
ngth>2000)
{
alert('curriculummuylargo');
}
else
{
alert('datoscorrectos');
}
}
</script>
<form>
<textareaid="curriculum"rows="10"cols="50"
></textarea>
<br>
<inputtype="button"value="Mostrar"
onClick="controlarCaracteres()">
</form>
</body>
</html>
Para saber el largo de la cadena cargada:
if (document.getElementById('curriculum').value.length>2000)
accedemos a la propiedad length.
77
PROBLEMA
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
functionverificar()
{
varnombre=document.getElementById('nombre').value;
varmail=document.getElementById('mail').value;
var
comentarios=document.getElementById('comentarios').value
;
alert(nombre+'\n'+mail+'\n'+comentarios);
}
</script>
<form>
Ingresenombre:
<inputtype="text"id="nombre"><br>
Ingresemail:
<inputtype="text"id="mail"><br>
Comentarios:<br>
<textareaid="comentarios"rows="20"
cols="100"></textarea><br>
<inputtype="button"value="confirmar"
onClick="verificar()">
</form>
</body>
</html>
78
Eventos onFocus y onBlur
<html>
<head></head>
<body>
<scripttype="text/javascript">
functionvaciar(control)
{
control.value='';
}
functionverificarEntrada(control)
{
if(control.value=='')
alert('Debeingresardatos');
}
</script>
<form>
<inputtype="text"id="nombre"
onFocus="vaciar(this)"
onBlur="verificarEntrada(this)"
value="nombre"><br>
79
<inputtype="text"id="edad"
onFocus="vaciar(this)"
onBlur="verificarEntrada(this)"value="mail">
<br>
<inputtype="button"value="Confirmar">
</form>
</body>
</html>
A cada control de tipo TEXT le inicializamos los eventos onFocus y onBlur.
Tambin cargamos las propiedad value para mostrar un texto dentro del
control. Le indicamos, para el evento onFocus la funcin vaciar, pasando
como parmetro la palabra clave this que significa la direccin del objeto
que emiti el evento. En la funcin propiamente dicha, accedemos a la
propiedad value y borramos su contenido. Esto nos permite definir una
nica funcin para vaciar los dos controles.
De forma similar, para el evento onBlur llamamos a la funcin
verificarEntrada donde analizamos si se ha ingresado algn valor dentro del
control, en caso de tener un string vaco procedemos a mostrar una ventana
de alerta.
PROBLEMA
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
functionverificar(control)
80
{
if(control.value.length<7||
control.value.length>20)
{
alert('cantidaddecaracteresnovalidoenla
clave(debenserentre720caracteres)');
}
}
</script>
<form>
Ingresenombredeusuario:
<inputtype="text"id="usuario"><br>
Ingreseclave:
<inputtype="password"id="clave"
onBlur="verificar(this)"><br>
<inputtype="button"value="confirmar">
</form>
</body>
</html>
<html>
<head></head>
<body>
81
<scripttype="text/javascript">
functionpintar(col)
{
document.bgColor=col;
}
</script>
<ahref="pagina1.html"
onMouseOver="pintar('#ff0000')"
onMouseOut="pintar('#ffffff')">Rojo</a>
<ahref="pagina1.html"
onMouseOver="pintar('#00ff00')"
onMouseOut="pintar('#ffffff')">Verde</a>
<ahref="pagina1.html"
onMouseOver="pintar('#0000ff')"
onMouseOut="pintar('#ffffff')">Azul</a>
</body>
</html>
Las llamadas a las funciones las hacemos inicializando las propiedades
onMouseOver y onMouseOut:
<a href="pagina1.html" onMouseOver="pintar('#ff0000')"
onMouseOut="pintar('#ffffff')">Rojo</a>
La funcin 'pintar' recibe el color e inicializa la propiedad bgColor del objeto
document.
function pintar(col)
{
document.bgColor=col;
}
Otro problema que podemos probar es pinta de color el interior de una
casilla de una tabla y regresar a su color original cuando salimos de la
misma:
<html>
<head></head>
82
<body>
<scripttype="text/javascript">
functionpintar(objeto,col)
{
objeto.bgColor=col;
}
</script>
<tableborder="1">
<tr>
<tdonMouseOver="pintar(this,'#ff0000')"
onMouseOut="pintar(this,'#ffffff')">rojo</td>
<tdonMouseOver="pintar(this,'#00ff00')"
onMouseOut="pintar(this,'#ffffff')">verde</td>
<tdonMouseOver="pintar(this,'#0000ff')"
onMouseOut="pintar(this,'#ffffff')">azul</td>
</tr>
</table>
</body>
</html>
La lgica es bastante parecida a la del primer problema, pero en ste, le
pasamos como parmetro a la funcin, la referencia a la casilla que
queremos que se coloree (this):
<td onMouseOver="pintar(this,'#ff0000')"
onMouseOut="pintar(this,'#ffffff')">rojo</td>
PROBLEMA
83
<html>
<head></head>
<body>
<scripttype="text/javascript">
functionpintar(objeto,col)
{
objeto.bgColor=col;
}
</script>
<tableborder="1">
<tr>
<tdonMouseOver="pintar(this,'#ff0000')"
onMouseOut="pintar(this,'#ffffff')">
<ahref="http://www.hotmail.com">Hotmail</a>
</td>
<tdonMouseOver="pintar(this,'#00ff00')"
onMouseOut="pintar(this,'#ffffff')">
<ahref="http://www.yahoo.com">Yahoo</a>
</td>
<tdonMouseOver="pintar(this,'#0000ff')"
onMouseOut="pintar(this,'#ffffff')">
<ahref="http://www.gmail.com">GMail</a>
</td>
</tr>
</table>
</body>
</html>
Evento onLoad
84
<html>
<head></head>
<bodyonLoad="activarPrimerControl()">
<scripttype="text/javascript">
functionactivarPrimerControl()
{
document.getElementById('nombre').focus();
}
</script>
<form>
Ingresesunombre:
<inputtype="text"id="nombre"><br>
Ingresesuedad:
<inputtype="text"id="edad"><br>
<inputtype="button"value="Confirmar">
</form>
</body>
</html>
En la marca body inicializamos el evento onLoad con la llamada a la funcin
activarPrimerControl:
<body onLoad="activarPrimerControl()">
La funcin da el foco al control text donde se cargar el nombre:
function activarPrimerControl()
{
document.getElementById('nombre').focus();
}
PROBLEMA
85
<html>
<head>
</head>
<bodyonLoad="mostrarMensaje()">
<scripttype="text/javascript">
functionmostrarMensaje()
{
alert('Lapginaestcargada');
}
</script>
<h1>Bienvenidos</h1>
</body>
</html>
El objeto window.
86
El parmetro URL es una cadena que contendr la direccin de la
ventana
que estamos abriendo: si est en blanco, la ventana se abrir con
una pgina
en blanco.
Las propiedades son una lista, separada por comas, de algunos de
los
siguientes elementos:
toolbar[=yes|no]
location[=yes|no]
directories[=yes|no]
status[=yes|no]
menubar[=yes|no]
scrollbars[=yes|no]
resizable[=yes|no]
width=pixels
height=pixels
Es bueno hacer notar que a todas estas funciones las podemos llamar
anteponindole el nombre del objeto window, seguida del mtodo o en
forma resumida indicando solamente el nombre del mtodo (como lo hemos
estado haciendo), esto es posible ya que el objeto window es el objeto de
mximo nivel.
Ej:
valor=window.prompt("Ingrese valor","");
o
valor=prompt("Ingrese valor","");
Para reducir la cantidad de caracteres que se tipean normalmente
encontraremos los programas tipeados de la segunda forma.
<html>
<head></head>
<body>
<scripttype="text/javascript">
functionabrir()
{
varventana=open();
ventana.document.write("Estoyescribiendo
enlanuevaventana<br>");
ventana.document.write("Segundalinea");
87
}
functionabrirParametros()
{
var
ventana=open('','','status=yes,width=400,height
=250,menubar=yes');
ventana.document.write("Estoesloprimero
queaparece<br>");
}
functionmostrarAlerta()
{
alert("Estaventanadealertayala
utilizamosenotrosproblemas.");
}
functionconfirmar()
{
varrespuesta=confirm("Presionealgunode
losdosbotones");
if(respuesta==true)
alert("presionaceptar");
else
alert("presioncancelar");
}
functioncargarCadena()
{
varcad=prompt("cargueunacadena:","");
alert("Ustedingreso"+cad);
}
</script>
88
Esteprogramapermiteanalizarlallamadaa
distintasresponsabilidadesdelobjeto
window.<br>
<form>
<br>
<inputtype="button"value="open()"
onClick="abrir()">
<br>
<inputtype="button"value="opencon
parmetros"onClick="abrirParametros()">
<br>
<inputtype="button"value="alert"
onClick="mostrarAlerta()">
<br>
<inputtype="button"value="confirm"
onClick="confirmar()">
<br>
<inputtype="button"value="prompt"
onClick="cargarCadena()">
</form>
</body>
</html>
PROBLEMA
<html>
<head>
89
</head>
<body>
<scripttype="text/javascript">
functionabrirVentana()
{
varventana=open('','','width=600,height=300');
}
</script>
<form>
<inputtype="button"value="abrirventana"
onClick="abrirVentana()">
</form>
</body>
</html>
90