HTMLpointHTMLpoint HTMLpoint.com


 Paso de los datos



En lugar de explicar cómo pasar los datos, veamos una situación concreta.

Supongamos que tenemos un formulario con campos de tipo button y que queremos indicar a una ventana o a la página sucesiva qué tecla ha sido pulsada.

Insertamos las teclas y después declaramos en la sección head una variable global Tecla:

<script language="javascript"><!--
var tecla=null;
//--></script>

a cada tecla le asociamos el evento:

onclick="tecla=valor"

donde valor será igual a 1 en la primera tecla, igual a 2 en la segunda e igual a 3 en la tercera.

Supongamos dos casos:

  1. que queremos transmitir los datos a una ventana que se abriremos;
  2. que queremos transmitir los datos a una página enlazada.

En el primer caso tenemos sólo un problema de transferencia de datos porque la ventana madre, que contiene el valor que debe pasar, conserva siempre este valor hasta que no la cerramos, por lo cual basta insertar una línea de código del tipo:

window.opener.tecla

para indicar: toma el valor de la variable tecla contenida en la ventana que ha abierto la ventana secundaria.

Pulsa uno de los tres botones y después haz clic aquí para verificar

En el segundo caso, sin embargo, podemos utilizar un ventana con marcos (también vale una ventana con un solo marco. Conservamos la variable en la ventana top (la que contiene los marcos) y la invocamos desde las otras ventanas con las propiedades parent.nombrevariable o bien top.nombrevariable.

Sin embargo, a menudo los marcos no son aconsejables y su uso es escaso en los sitios de un cierto nivel donde la posibilidad de transferir datos reside en el uso de cookie o URL.

En este último caso pasamos el valor a la página sucesiva mediante URL y escribimos el siguiente código HTML a un enlace:

<A HREF="prova25b.htm?tecla">

Observa que el valor indicado está tras el signo de interrogación. Este tipo de codificación es la utilizada por Perl y por otros lenguajes que operan en el servidor, pero aquí puede adaptarse a HTML (queda sólo hacer una pequeña observación: este modo de pasar datos parece no funcionar con IE4).

El problema vuelve a plantearse cuando hay que recuperar el valor en la página sucesiva, ya que el navegador lee el URL como una sola cadena. En este caso, hay que utilizar las propiedades y los métodos del objeto String. Pongamos que tenemos la locación en una variable:

var ayuda=String(this.location);
var tecla=ayuda.charAt(ayuda.lastIndexOf("?")+1);

en la primera línea se toma la URL y se transforma en cadena (¿recuerdas los tipos de variables?), en la segunda, se lee el carácter el la posición sucesiva a la del último signo de interrogación de la cadena.

Pulsa uno cualquiera de los tres botones y haz clic aquí (presta atención a la URL de la página sucesiva


  Vuelve a principio de página