Está usted en Indice > Construcción > Lenguajes > JavaScript > Lecciones y Paso a Paso > Euroconversor en Javascript
Construcción
Maletín
Utilidades
Cursos
Promoción
Rentabilidad
Zona Novatos
Foros
Acceso a tu cuenta

Euroconversor en Javascript

Este fantástico script realiza las conversiones monetarias entre las monedas de la zona Euro, el Euro y el dólar americano de forma automática. Basta con introducir el valor en cualquiera de las monedas, y automáticamente se actualizan los contravalores en las restantes.

Para el calculo del cambio con el dólar estadounidense se requiere introducir la razón de cambio USD/euro. Si no se indica, el script toma un valor por defecto, correspondiente al cambio aplicado el día 23/11/2001. Por otra parte, si el navegador no soporta JavaScript, se visualizan los tipos de cambio manejados, aunque obviamente no se podrán realizan los cambios.

Realmente útil, este conversor es un ejemplo del uso de formularios con JavaScript, y de las posibilidades de cálculo de este lenguaje.


Este script debe ir entre las tags <head> y </head> de la página:

<script language="javascript" type="text/javascript">
/* Noviembre 2001, David Hernández Sanz
http://www.terra.es/personal3/davidhdezsanz/
Realiza cambios monetarios entre las monedas nacionales de los paises de la
"zona euro" y el euro y el dolar estadounidense (US$). Al cambiar el valor de
cualquier moneda, se calculan las cantidades equivalentes en el resto.
Para el calculo del cambio con el dolar estadounidense se requiere introducir
la razon de cambio US$/euro. Si esta no se indica se toma un valor por defecto.
Si el navegador no admite scripts, se visualizan los tipos de cambio manejados
pero no se realizan cambios.
*/
//Este script y otros muchos pueden
//descarse on-line de forma gratuita
//en El Código: www.elcodigo.com

// DECLARACION DE FUNCIONES
// function euroconversor(mon, form) JS1.1;
// function vacio(cadena) JS1.0; euroconversor
// function normalizar(formato_ant) JS1.0; euroconversor
// function cambiar(cambios, inf, sup, euros, formato, form)
// JS1.1; euroconversor
// DECLARACION DE CONSTANTES
var cambio_dolar = 0.8770; // cambio US$/euro
var cambio_dolar_fecha = "23/11/2001";
// DECLARACION DE VARIABLES GLOBALES
var valor; // valor de la moneda a cambiar
var error; // error o no

/* convierte mon al resto, en form */
function euroconversor(mon, form)
{ // DECLARACION DE VARIABLES
cambios = [1.0, // cambios monetarios x/euro; euro
cambio_dolar, // US$
1.95583, // marcos alemanes
13.7603, // chelines austriacos
40.3399, // francos belgas
166.386, // pesetas espanolas
5.94573, // marcos finlandeses
6.55957, // francos franceses
340.75, // dracmas griegos
2.20371, // florines holandeses
0.787564, // libras irlandesas
1936.27, // liras italianas
40.3399, // francos luxemburgueses
200.482]; // escudos portugueses
var valor_euros; // cantidad de mon en euros
var formato; // formato (¿?, 0; 1,1, 1; 1.0, 2)
var decimal; // punto decimal segun formato
valor = form.dolar.value; // INICIO
if(!vacio(valor))
{
formato = normalizar(0); // normaliza form.dolar
if(isNaN(valor))
alert("El cambio US$/euro no es un número correcto.n" +
"Debe estar en la forma 1552,95 o 1552.95.n" +
"Se tomará el valor " + cambios[1] + " US$/euro por defecto " +
"(" + cambio_dolar_fecha + ").");
else
cambios[1] = valor;
}
else
formato = 0;
decimal = formato == 1 ? ',' : '.';
valor = form.moneda[mon].value; // normaliza form.moneda[mon]
if(vacio(valor))
alert("No hay cantidad a cambiar.");
else
{
formato = normalizar(formato);
if(isNaN(valor))
alert("La moneda no es un número correcto.n" +
"Debe estar en la forma 1552,95 o 1552.95.");
else
if(error)
alert("La moneda no está en la misma forma que el valor " +
"US$/euro.n" +
"Debe estar en la forma 1552" + decimal + "95.");
else
{
if(mon == 0) // cambia a euros
valor_euros = valor; // cambios[0] = 1.0
else
valor_euros = valor / cambios[mon];
cambiar(cambios, 0, mon, valor_euros, formato, form);
cambiar(cambios, mon + 1, cambios.length, valor_euros, formato,
form);
}
}
}

/* dice si cadena es texto no vacio o no */
function vacio(cadena)
{ // DECLARACION DE CONSTANTES
var blanco = " nrt"; // blancos (SP, LF, CR, TAB)
// DECLARACION DE VARIABLES
var i; // indice en cadena
var es_vacio; // cadena es vacio o no
for(i = 0, es_vacio = true; (i < cadena.length) && es_vacio; i++) // INICIO
es_vacio = blanco.indexOf(cadena.charAt(i)) != - 1;
return(es_vacio);
}

/* escribe valor en forma inglesa (1552,95 -> 1552.95) y dice la forma ori- */
/* ginal, segun sea el formato_ant */
function normalizar(formato_ant)
{ // DECLARACION-INICIALIZACION VARIABLES
var formato_act = 0; // formato actual (¿?, 1,1, 1.0)
var coma = valor.indexOf(','); // indice de ',' en valor
var punto = valor.indexOf('.'); // indice de '.' en valor
if((coma == -1) && (punto == -1)) // INICIO
{ // valor 9999
formato_act = formato_ant;
error = false;
}
else
if(coma != -1) // valor 9999,99
{
formato_act = 1;
error = formato_ant == 2;
}
else // punto; valor 9999.99
{
formato_act = 2;
error = formato_ant == 1;
}
if((formato_act == 1) && (coma != -1)) // pasa a formato ingles
valor = valor.substring(0, coma) + '.' +
valor.substring(coma + 1, valor.length);
return(formato_act);
}

/* cambia euros a monedas [inf, sup], desnormaliza segun formato y copia en */
/* form */
function cambiar(cambios, inf, sup, euros, formato, form)
{ // DECLARACION DE VARIABLES
var i; // indice en form.monedas
var valor_x; // valor de moneda x
var punto; // indice de '.' en valor_x
for(i = inf; i < sup; i++) // INICIO
{ // cambia
valor_x = euros * cambios[i];
valor_x = valor_x.toString();
if(formato == 1) // desnormaliza
{
punto = valor_x.indexOf('.');
if(punto != -1)
valor_x = valor_x.substring(0, punto) + ',' +
valor_x.substring(punto + 1, valor_x.length);
}
form.moneda[i].value = valor_x; // copia en form
}
}
</script>

Es necesario añadir el siguiente código a la página HTML, entre <body> y </body> :
<div align="center">
<table><tr><td class="buscador">
<p>
<form>
Introduce el cambio actual US$/€:<br>
<input type="text" name="dolar" size="20"><br><br>

Introduce el valor en &euro o US$ a convertir y pulsa enter:<br>
<input type="text" name="moneda" value="" size="20" onchange="javascript:euroconversor(0, this.form);">€<br>
<input type="text" name="moneda" value="" size="20" onchange="javascript:euroconversor(1, this.form);">US$<br><br>

Resultado de la conversión:<br>
<input type="text" name="moneda" value="1,95583" size="20" onchange="javascript:euroconversor(2, this.form);"> Marcos alemanes<br>
<input type="text" name="moneda" value="13,7603" size="20" onchange="javascript:euroconversor(3, this.form);"> Chelines austriacos<br>
<input type="text" name="moneda" value="40,3399" size="20" onchange="javascript:euroconversor(4, this.form);"> Francos belgas<br>
<input type="text" name="moneda" value="166,386" size="20" onchange="javascript:euroconversor(5, this.form);"> Pesetas españolas<br>
<input type="text" name="moneda" value="5,94573" size="20" onchange="javascript:euroconversor(6, this.form);"> Marcos finlandeses<br>
<input type="text" name="moneda" value="6,55957" size="20" onchange="javascript:euroconversor(7, this.form);"> Francos franceses<br>
<input type="text" name="moneda" value="340,75" size="20" onchange="javascript:euroconversor(8, this.form);"> Dracmas griegos<br>
<input type="text" name="moneda" value="2,20371" size="20" onchange="javascript:euroconversor(9, this.form);"> Florines holandeses<br>
<input type="text" name="moneda" value="0,787564" size="20" onchange="javascript:euroconversor(10, this.form);"> Libras irlandesas<br>
<input type="text" name="moneda" value="1936,27" size="20" onchange="javascript:euroconversor(11, this.form);"> Liras italianas<br>
<input type="text" name="moneda" value="40,3399" size="20" onchange="javascript:euroconversor(12, this.form);"> Francos luxemburgueses<br>
<input type="text" name="moneda" value="200,482" size="20" onchange="javascript:euroconversor(13, this.form);"> Escudos portugueses
</form>
</p>
</td></tr></table>
</div>




Autor: David Hernández Sanz
www.dhs.sitio.net

Usuarios que han visto este tema también han visto...

- Efecto Terremoto
- Modificar elementos HTML con JavaScript
- Cómo detectar la resolución de la pantalla en JavaScript
- Introducción a AJAX con PHP y formularios
- Menú barra horizontal con botones para desplazar


Versión imprimible - Versión imprimible de este documento
Enviar e-mail - Enviar por e-mail este documento
Publicidad

Información legal | Política de Privacidad | Contacte con nosotros

Otro proyecto de Factoría de Internet. Copyright© 2003-2008 Factoría de Internet S.L.. Todos los derechos reservados.


Página generada el 28-08-2008 a las 15:50:16