<SCRIPT><!--
//--></SCRIPT>
<SCRIPT Language="Javascript"><!--
//--></SCRIPT>
<SCRIPT Language="Javascript1.2"><!--
//--></SCRIPT>
Ejemplo
1. Escribir con el bloc de notas el siguiente comando: alert('Soy un archivo externo'), y guardarlo
como prova.js;
2. Escribir en otro file el siguiente cdigo HTML:
<HTML><HEAD>
<SCRIPT SRC="prova.js">
</SCRIPT></HEAD>
<BODY></BODY>
Script internos
Ejemplo
<HTML><HEAD>
<SCRIPT Language="Javascript">
x=1; alert('CABECERA='+x);
</SCRIPT></HEAD>
<BODY>
<SCRIPT Language="Javascript">
x++; alert('CUERPO='+x);
</SCRIPT>
<SCRIPT Language="Javascript">
x++; alert('CUERPO='+x);
</SCRIPT>
</BODY>
Los eventos
He aqu un ejemplo:
Podemos observar que el evento onClick en la marca como si fuera un especificador del mismo.
Los eventos, adems, se pueden tambin activar directamente dentro de los script, invocndose
como si fueran una propiedad del objeto. La sintaxis es:
Objeto.evento=handler;
Para aclarar este concepto, que es muy til pero raramente se aplica, voy a contaros una
ancdota: cuando empec a usar Javascript buscaba un script que me permitiera simular el
streaming, es decir, cargar de la red una imagen de una secuencia slo cuando estaba seguro de
que la precedente ya haba sido cargada y, por tanto, visualizada. Usar un temporizador era
imposible porque el efecto cambiaba segn la velocidad de conexin. En un ptimo tratado de
Javascript, encontr unas lneas que me dieron el pie. De esta manera, elabor un array de
imgenes y operaba con el comando:
document.images[num].onload=carga();
donde la funcin carga() serva a cargar la imagen sucesiva. Todo funcionaba perfectamente, si
bien con algunas pequeas diferencias segn el navegador usado.
Con Explorer, sin embargo, se puede utilizar un script especfico para un objeto y para un evento
mediante la sintaxis:
Rollover
donde el comodn # sustituye a cualquier otro enlace, mientras que num es el nmero de ndice de
la imagen en la pgina HTML.
1. onDragDrop: evento que se activa cuando un usuario arrastra un objeto por la ventana del
navegador o cuando deja un file en la misma;;
2. onMove: se activa cuando un objeto mueve una ventana o un marco;
3. onDragStart: evento que se activa en cuanto el usuario inicia a arrastrar un objeto;
4. onDrag: se activa cuando el ratn arrastra un objeto o una seleccin de texto a la ventana
del mismo navegador o incluso de otro o al Desktop;
5. onDragEnter: se activa en cuanto el usuario arrastra un objeto a un objetivo vlido de ese
mismo navegador o de otro;
6. onDragOver: se activa cuando el usuario arrastra un objeto a un objetivo vlido para
alojarlo; es similar al evento precedente pero es activado despus de aqul;
7. onDragLeave: se activa cuando el usuario arrastra un objeto a un objetivo vlido para
alojarlo, pero no lo suelta;
8. onDragEnd: se activa cuando el usuario suelta el objeto al trmino del arrastre.
9. onDrop: se activa cuando se deja de pulsar el botn del ratn tras una operacin de
arrastre;
Eventos vinculados al teclado
En este grupo se pueden incluir los siguientes eventos:
1. onKeyPress: evento que se activa cuando un usuario pulsa y deja de pulsar una tecla o
tambin cuando la mantiene pulsada;
2. onKeyDown: activado cuando se pulsa la tecla;
3. onKeyUp: activado cuando una tecla, que se haba pulsado, deja de pulsarse;
4. onHelp: activado cuando se pulsa la tecla F1;
Es importante decir algo ms sobre onChange: el evento se parece mucho a onBlur, pero verifica
tambin que el elemento que lo invoca haya sido modificado.Este evento, de hecho, se activa
cuando se selecciona otro elemento de una lista o cuando se modifica un campo de texto, por lo
que adems de la activacin, hace falta tambin realizar una accin.
y aqu est el cdigo que hay que introducir en la marca select (presta atencin al evento):
<select name="select"
onChange="if(this.options[1].selected) alert('Has seleccionado el segundo');
else if(this.options[2].selected) alert('Has seleccionado el tercero') ">
Valores literales
Los valores literales son cantidades explcitas por lo que no se declaran y sirven para
proporcionar informacin a expresiones o funciones (p.ej., el nmero 45 es explcitamente
considerado numrico).
El entero presenta tres variantes: decimal, hexadecimal y octal segn la base con que se
representa. Para representar un octal se hace preceder por 0, para representar un hexadecimale se
hace preceder por 0x.
El valor nulo se obtiene si las variables son indefinidas, es decir, cuando no se asigna ningn valor
en el momento de la declaracin.
Es importante subrayar que a una variable se le puede asignar incluso un objeto y se pude crear
tambin un objeto genrico trmite el enunciado:
nombreobjeto=new Object();
Caracteres especiales
Entre las cadenas hay que sealar los caracteres especiales que son un medio para formatear el
texto:
Designacin
Descripcin Secuencia
estndar
Continuacin <newline> \
Nueva lnea NL (LF) \n
Tab horizontal HT \t
Backspace BS \b
Vuelta carro CR \r
Avance pgina FF \f
Backslash \ \\
Comillas
' \'
simples
Comillas
" \"
dobles
A menudo sucede que queremos indicar al elaborador que escribe en vdeo una cadena con un
aparte. En este caso, la indicacin se efecta con una secuencia de caracteres especiales. Un
carcter especial, por ejemplo, son justamente las comillas simples que a menudo sustituyen al
apstrofe, por lo que, en este ltimo uso, deben sealarse como carcter especial hacindolas
preceder de una barra de direccin inversa. El ordenador, en pocas palabras, cuando se encuentra
con estas particulares secuencias sabe que debe interpretar diversamente estos caracteres, casi
como si fueran comandos.
Declaracin variables
var micarcter,
mivariable;
var Verifica=null;
si se utiliza el comando
var Verifica;
Palabras reservadas
En Javascript hay palabras clave que no se pueden utilizar como identificadores de datos. He aqu
el elenco:
Las palabras clave reservadas, normalmente no usadas por Javascript van precedidas por un
asterisco *.
Tipos de variables
Para convertir los valores basta utilizar:
1. las comillas, para convertir un valor numrico en cadena o la suma de un nmero con un
espacio;
2. mtodo String() (desde Javascript 1.2) para convertir en cadena o con el constructor
String() (p.ej., micadena=String(num));
3. las funciones eval(), parseInt() y parseFloat() para convertir un valor cadena en numrico;
4. los valores lgicos se obtienen de valores numricos o cadena igualndolos a true o false.
parseInt busca un entero al inicio de una cadena, descartando las cadenas, y lo visualiza
ignorando las partes decimales y la eventual coma (p.ej., parseInt("39 grados")=39). Un
segundo parmetor, facultativo, es la base numrica (p.ej., parseInt(text,16) para buscar
nmeros hexadecimales);
parseFloat opera de la misma manera, pero conserva la eventual coma presente y el signo.
La funcin eval es bastante compleja y busca cualquier expresin Javascript vlida para
transformarla en nmero. En Netscape 2.0, sin ambargo, provoca cadas imprevistas:
Array
Javascript no soporta las matrices como variables, sino como objetos por lo que se crea una matriz
slo si se declara . Dicha declaracin debe hacerse como instancia del objeto Array:
nombrematriz=new Array(num)
Los array, en cuanto objetos, sern tratados ms adelante. Aqu ofreceremos slo un adelanto
entre otras cosas porque el programador tradicional los buscar por costumbre entre las variables.
Para acceder a un elemento de la matriz se utiliza el ndice que indica la posicin del elemento
dentro de la misma. Dicha posicin empieza a contarse desde 0 y no desde 1.
animals=new Object[]
animals[0]="rana";
animals[1]="pato";
animals[2]="burro";
animals[3]="oso";
animals[4]="gallina";
El uso de las matrices reviste gran importancia en Javascript porque este lenguaje indiciza
bastantes elementos, como las imgenes o los enlaces, por lo que se pueden invocar con el objeto
asociado o con el ndice.
Operadores
Los operadores aritmticos son binarios o unitarios. Los operadores unitarios modifican el valor al
que se aplican y son:
Los operadores unitarios matemticos pueden colocarse antes (prefijos) o despus (sufijos) del
operando y su valor vara segn esta posicin, ya que el operador prefijo modifica el operando
antes de utilizar su valor, mientras eloperador sufjo modifica el operando despus de haber
utilizado el valor. Un ejemplo puede facilitar la comprensin:
x=10; x=10;
y=x++; y=++x;
por lo que y=10 y por lo que y=11 y
x=11 x=11
Los operadores binarios matemticos no cambian el valor de los operandos, sino que memorizan el
resultado en un tercer operando. Incluyen las principales operaciones aritmticas:
Operador Smbolo Accin
Suma + Suma dos operandos
Resta - Reste el segundo operando del primero
Multiplicacin * Multiplica los dos operandos
Divisin / Divide el primer operando por el segundo
Facilita el resto de la divisin entre dos
Resto (mdulo) %
operandos
Operador Accin
> Mayor que
>= Mayor o igual
< Menor que
<= Menor o igual
== Igual
!= Distinto
La negacin (!) equivale al complemento a uno (~). Los operadores &, | valoran ambos lados del
argomento y deciden el resultado. Los operadores && y || pueden emplearse para evitar la
valoracin de los operandos de la derecha si la valoracin es necesaria. Las tablas de verdad
correspondientes son:
X Y X&&Y X| |Y X^Y !X
0 0 0 0 0 1
0 1 0 1 1 1
1 0 1 1 0 0
1 1 0 0 1 0
Operador Accin
& AND
| OR
^ XOR
~ Complemento a uno
>> Shift a la derecha
<< Shift a la izquierda
Shift a la derecha
>>>
rellenando los ceros
If...else
if(expresin) instruccin
[else instruccin]...
if (expresin) {instruccin}
else (expresin) {instruccin}
else (expresin) {instruccin}
else (expresin) {instruccin}.
else instruccin
switch (expresin) {
case constante1: instrucciones
break;
case constante 2: instrucciones
break;
....
default instrucciones
}
For
for (inicializacin; condicin; incremento) instruccin;
for (i=0; i<10; i++){
matriz[i]=0;
}
Otro tipo de ciclo es for...en que trabaja con las propiedades de un objeto.
La sintaxis es:
Dicha funcin se usa para analizar las propiedades del objeto que se indica. Es una instruccin
algo compleja pero de enorme utilidad para conocer el valor que en un momento dado poseen las
propiedades de un objeto. Aqu no entraremos en pormenores. Baste un ejemplo:
for (i en navigator){
document.write("Propiedad :"+i);
document.writeln (" valor: ": +navigator[i]);
}
do ... While
Break y continue
Los comandos break y continue sirven para optimizar los ciclos for y while, as como para el
operador condicional if.
function interrumpe() {
while (x>0) {
if (x>3)
break; //aqu la instruccin se interrumpe y sale del if
x++;
}
return x;
}
El ejemplo muestra cmo el ciclo contina incrementando la variable x hasta que sta llega a ser
superior a 3, en cuyo caso encuentra la instruccin break que interrumpe el ciclo y contina con la
instruccin que sigue al bloque (return x;).
El comando continue, por su parte, indica que se continue el bloque pero interrumpiendo la
iteracin en ese punto y volviendo a comenzar desde el inicio del bloque.
while (x<10) {
x++;
if (x>3)
continue;
a+=x;
}
El ejemplo muestra cmo el ciclo se repite si x es inferior a 10, mientras que si es igual a 8, la
instruccin continue interrumpe el ciclo y vuelve a empezar desde el principio.