Tutorial JAVASCRIPT

 

 

Objetivos

 

 

 

 

 

Enlaces a otros tutoriales

 

http://www.programacion.net/tutoriales/javascript/

 

http://www.iec.csic.es/criptonomicon/javascript/javascript.html

 

http://www.webteacher.com/javascript/

 


 

 

Comentarios sobre este tutorial 

Añadir JavaScript a una página 

Abrir y cerrar ventanas 

Escribir en la ventana actual 

Validar formularios 

Cambiar imágenes dinámicamente 

Variables, funciones y cálculos matemáticos sencillos

Usar condicionales if..else 

Usar bucles while  

La barra de estado 

Cómo reutilizar funciones JavaScript 

Test de autoevaluación  

Ejemplo:

Teclee su nombre:

 

Lenguaje de guiones empotrado en HTML

Permite la creación de funciones y objetos para:

 

No puede leer, escribir, crear, borrar o listar ficheros (excepto cookies).

No puede establecer conexión directa con otras máquinas (excepto enviar correo).

 

 

JavaScript fue creado por Netscape, pero Internet Explorer también lo soporta, salvo alguna diferencia en la sintaxis. Puede deshabilitarse la interpretación de scripts.

 

Para añadir código JavaScript a una página HTML se deben escribir las siguientes líneas:

<script language="JavaScript">

            código javaScript

</script>


 

El siguiente código permite  comprobar si el navegador soporta JavaScript

 

 

<script language="JavaScript">
    //document es la hoja en blanco que muestra el navegador
    document.write("Su navegador soporta JavaScript");
    //alert muestra una ventana con un texto como demostración del buen funcionamiento
    alert("Hola, soy la primera ventana de JavaScript");
</script>
<noscript> su navegador no soporta JavaScript </noscript>

 


Veamos ahora cómo crear variables y funciones con un  primer ejemplo

El código de este primer ejemplo es el siguiente:

 
<script language="JavaScript">

var texto="La fecha de hoy es: ";
//declaración de variables
var hoy= new Date();
var dia= hoy.getDate();
var mes= hoy.getMonth()+1;
var an= hoy.getFullYear();

alert(texto + "\n" + dia + "-" + mes + "-" + an);


function conversor()       
//declaración de función
{
var euro= 166.386;
var precio= 200;
var resultado;
resultado= precio / euro;  
//cálculo matemático sencillo

alert("Si tengo  " + resultado + " euros, eso son " + precio + " pesetas");
}

conversor();
//llamada a la función

//la variable resultado es local a la función y no debe verse ahora:

alert("repetimos ..."+ resultado);

</script>

 

 

Las funciones deben crearse en la parte head del documento html, para poder referenciarlas cuantas veces y donde se desee en el body.


 

El ejemplo de la primera página, también usa una función y su código es:

 

 

       <head>

<script language="JavaScript">
 
//la siguiente función repite escrito en tres ventanas el texto recibido
 
function mensaje(texto) {
 
for (i=1; i<4; i++)
    {alert ("Hola "+ i +"ª  vez " + texto) }}

</script>
</head>

<body>

<form>
Teclee su nombre: <input name="nombre" type="text" size="20">
 
<input name="dato" type="button" value="mostrar ventana"
 
                   onclick="mensaje(form.nombre.value)">
 
</form>
 
</body>

 


El tercer ejemplo usa condicionales (if ... else) anidados dentro de una función.

 

    Elige un mes para ver un consejo   

 

Y el código de este tercer ejemplo es:

<script language="JavaScript">
 
  function saludo(){
 
         if (document.formu.mes.value=="julio")
 
                     {alert("vete a la playa");}
 
         else if (document.formu.mes.value=="enero")
 
                         {alert("vete a la sierra");}
 
                 else alert("vete al campo");
     }
 
 </script>


 <form action="" name="formu"> Elige un mes para ver un consejo
 
 <select name="mes" size="1" onchange="saludo();">
 <option value="enero">enero </option>
 <option value="noviembre">noviembre </option>
 <option value="julio">julio </option>
 </select>
 </form>

 


Veamos un cuarto ejemplo que usa bucles y condicionales dentro de las funciones,

además de pedir datos al usuario y hacer operaciones matemáticas

Con su correspondiente código:

 

<script language="JavaScript">

{/*se pide al usuario que teclee un número y se compara con el aleatorio generado. Gana el mayor */


while(confirm("¿Deseas jugar?"))
   
        y= prompt("Escribe un número del 0 al 9");
        x= Math.ceil(Math.random()*10); //se genera y redondea un aleatorio
        alert("Yo digo el número " + x);

        if (x== Math.max(x,y))
                {alert ("gano yo, por ser mi número el mayor de los dos");}
        else
                {alert("ganas tu, por ser tu número el mayor de los dos");}
}

</script>

 

 


 

Se pueden usar funciones para crear nuevos objetos para usarlos dentro de otras funciones.

Primero veremos un ejemplo de creación y uso de objetos, y de validación de formularios, con su código:

 

<script language="JavaScript">

//para crear un objeto, se debe definir una función y luego llamarla con new

function crearCliente(nombre, ciudad, edad, email, sexo)
{

    //función de definición del tipo de objeto

    this.nombre=nombre;
    this.ciudad=ciudad;
    ed=parseInt(edad,10);
//obtención de un número dentro de una cadena


    if (isNaN(ed))
//si no es un número, la edad se pone a 0
        {   alert("La edad será 0 porque no has tecleado un número ");
            this.edad=0;}
    else
        {this.edad=ed;}

        //la dirección de correo debe contener una @ y un punto
   if (email.indexOf("@")==-1 || email.indexOf(".")==-1)
        {  alert("la dirección de correo será ' ' por ser erronea");
            this.email="";
        }
  else
        {this.email=email;}


this.sexo=sexo;
}


function confirmar(n, c, e, m, s)
{

//muestra un mensaje para decir que se ha creado el cliente y pone fondo rojo,

cli= new crearCliente(n, c, e, m, s); //creación del objeto

document.write("creado el cliente ");
document.bgColor="red";
}
</script>
</head>
 

<body>

<br>
<!--formulario de petición de datos-->

<form action="" name="formu"

onsubmit="confirmar(document.formu.nombre.value,

                 document.formu.ciudad.value, document.formu.edad.value,

                 document.formu.email.value, document.formu.sexo.value);">


<!--llamada a la función que crea el objeto cuando se pulsa el botón submit-->

<h2>Introducción de datos de clientes</h2><br><br>

Nombre <input type="text" name="nombre" size="20">

Ciudad <input type="text" name="ciudad" size="20"> <br><br>
Edad <input type="text" name="edad" size="20">

e-mail <input type="text" name="email" size="20">

Sexo <input type="radio" name="sexo" value="hombre"> hombre

<input type="radio" name="sexo" value="mujer"> mujer <br><br>
<input type="submit" value="Confirmar los datos">

</form>

</body>

 

 

Destacamos en este ejemplo la validación de datos que introduce el usuario.

Se comprueba que se introduce un número cuando se pide la edad

        if (isNaN(ed))

y que se introduce una dirección de correo con un formato válido.

        if (email.indexOf("@")==-1 || email.indexOf(".")==-1)


 

Es posible generar código html que se escribirá en el documento abierto, escribiéndo código desde JavaScript. Para ello se envía al objeto  document el mensaje write.

 

En este ejemplo se escribe el código correspondiente a la generación de una tabla o array multidimensional.

 

 

<script language="JavaScript">
//objetos arrays multidimensionales

lunes= new Array("ingles", "lengua", "dibujo");
martes= new Array("matemáticas", "lengua", "física");
miercoles= new Array(" ", "física", "dibujo");

horario= new Array(lunes, martes, miercoles);

document.write("<b>Horario de Clases</b><br><br>");
 

//con write se escribe código html dentro del objeto document

document.write("<table border=2>

<tr bgcolor='orange'>

<td>LUNES</td><td>MARTES</td><td>MIÉRCOLES</td></tr>");

for(i=0;i<horario.length;i++)
    {
        document.write("<tr>");

        for(j=0;j<lunes.length;j++)

                {document.write("<td>"+ horario[j][i]+" </td>");}

        document.write("</tr>");
    }

document.write("</table>");

</script>

 


Ahora veremos varias utilidades relativas a abrir y cerrar ventanas que permite JavaScript:

Hemos visto que se puede abrir ventanas con:


pero además, el usuario puede abrir otras páginas html como veremos en los siguientes ejemplos.

 

Pulsar el botón para abrir una ventana

 

El código para abrir una ventana nueva es:

<script language="JavaScript">

function abrirVentana(){

    ventana= open("TutorialJavaScript_archivos/pru1.html","nueva","width=300,heigth=120");
   
// open abre la ventana que se indica en la dirección dada
}

</script>

</head>

<body>

 

<form> Pulsar el botón para abrir una ventana

<input type="button" value="Cocodrilo" onclick="abrirVentana()">

</form>

 

</body>

 

 

Se puede observar cómo se ordena a la nueva ventana que se cierre cuando se pulsa un botón, o una imagen en este caso.

El código para cerrar la ventana cuando se pulsa la imagen es:

 

 

<img src="cocodrilo.jpg" alt="cocodrilo" width="200" height="267"

 

     onclick="self.close()">

 


Ahora veremos cómo usar objetos JavaScript para abrir otra url  y para usar la historia de visitas.

 

AlhambraPulsar la fotografía para ver el interior del monumento,

(imagen con enlace a otra página )

 

Su código es:

 

<script language="JavaScript">

 function abrirUrl()
{
    location='TutorialJavaScript_archivos/pru2.html';}
/* el objeto location es la url. En la misma ventana

                                                     abre otra url */
 

</script>
</head>


<body>

<a href="javascript:abrirUrl()">
<img src="alhambra.jpg" name="alam" alt="Alhambra"

         border="0"   align="left" width="244" height="95">
</a> Pulsar la fotografía para ver el interior


</body>
</html>


En la nueva url hemos podido ver cómo usar el objeto historia del sistema para volver a la página anterior

 
    
  Ahora puedes pulsar este botón para ir a la página anterior


El código de esta utilidad es el siguiente:

 

<script language="JavaScript">
 

function volver()
{
    history.back() };
//se usa la función back del objeto history

</script>
</head>


<body>

<form> <input type="button" value="Página anterior"

                 onclick="volver()">

</form>

</body>
</html>

 



El icono o imagen cambia dinámicamente cuando se pasa el ratón sobre él

 

El siguiente código muestra cómo cambiar dinámicamente una imagen

 

<head>

 

 //las imágenes se guardan en una matriz llamada images, asociada al documento

//primero hay que definir o realizar la "precarga"  de las imágenes

 

imagen1= new Image   //se crean objetos Image y se les asocia un fichero
imagen1.src="arbol.gif"
imagen2= new Image
imagen2.src="tronco.gif"
var i=1;

function cambioIcono(){
    if (i==1)
        {  document.images['icono'].src= imagen1.src;
            i=2;}
    else
        {  document.images['icono'].src= imagen2.src;

          
            i=1;}

 

</head>

 

<body>

 

<img src="arbol.gif" name="icono"
        onmouseover="cambioIcono()" 
//imagen cuando el ratón está encima

        onmouseout="cambioIcono()" //imagen cuando el ratón está fuera

        width="32" height="32">
        El icono cambia cuando se pasa el ratón sobre él

</body>

 


Se puede indicar cuál es el mensaje que debe aparecer en la la barra de estado. Hay dos formas

 

1. El mensaje se asocia a un enlace, tal y como puede verse en la tabla índice de la primera página de este documento. Para ello se asigna a la palabra status el mensaje que se desea ver, indicando qué evento (onmouseover, onmouseclick, ...) se debe producir para que aparezca el mensaje.

<a onmouseover="status='Cómo añadir JavaScript dentro de una página web'; return true"

href="#anadirJavaScript">Añadir JavaScript a una página</a>

 

2. Se puede poner un scroll en la barra de estado para que aparezca un mensaje repetidamente, y asociar el mensaje a toda la página, añadiendo la palabra onload a la definición del body del fichero html. Para que aparezca el mensaje repetido se utiliza una función recursiva. El código puede ser el siguiente:

 

<head>

...

var texto=" --- Bienvenido a la pagina WEB mía ---";
var longitud=texto.length;

function BarraEstado(){

    texto=texto.substring(1,longitud)+texto.charAt(0);

    window.status = texto ;
    setTimeout("BarraEstado()",100);

}

</head>

<body onload=BarraEstado():>

....

El segundo argumento de setTimeout indica la frecuencia de repetición del mensaje. A mayor número, menor velocidad. Como ejemplo, pueden observarse la barra de estas páginas.

 


Reutilización de código: para evitar volver a escribir el mismo código de funciones en las distintas páginas que hagamos, lo ideal es crear un archivo de texto con código JavaScript, con extensión .js, incluir su referencia  al principio de la página y llamar a la función cuando se necesite.

 

Por ejemplo, en la siguiente línea se llama a la función para ver el día en que estamos:

 

El código para utilizar ficheros .js  es:

 

<body>
<script SRC="fecha_barraEstado.js"></SCRIPT>

 

.....

<script language="JavaScript">

        EscribeFecha(); //función definida dentro del fichero fecha_barraEstado.js

</script>

 


Test de autoevaluación

 

  1. ¿Qué relación hay entre Java y JavaScript?

  2. ¿Aceptan JavaScript todos los navegadores?

  3. ¿Es JavaScript orientado a objetos?

  4. ¿Dónde se deben declarar las funciones?

  5. ¿Dónde se suele llamar a las funciones?

  6. ¿Cómo se validan los datos de un formulario?

  7. ¿Cómo se crea una página web dinámicamente con JavaScript?

  8. ¿Cómo se usa la historia de visitas del navegador?

  9. ¿Qué ventanas pueden abrirse?

  10. ¿Para qué usar ficheros con extensión .js?

 


 

Este tutorial ha sido realizado por María José Rodríguez Fórtiz, profesora del departamento de Lenguajes y Sistemas Informáticos de la Universidad de Granada.

La documentación utilizada para prepararlo ha sido:

Deliberadamente se han escrito todos los apuntes en un único documento (salvo dos páginas de demostración para mostrar apertura de ventanas).

Se ha hecho así para facilitar la impresión por parte del alumno, así como para usarlo durante las clases de teoría.

No se ha usado ningún fondo y se ha evitado en lo posible usar tablas, y diferentes estilos de texto para simplificar el código.

Por favor, si utilizas este tutorial recuerda quién lo hizo y el tiempo que le dedicó.

Para cualquier comentario o sugerencia, podéis escribirme aquí

 

Granada, septiembre de 2005