Este es el codigo:
lista_dinamica.js
Código :
// Constructor
function listaDinamica( frm, name, data ) {
this.frm = frm;
this.name = name;
this.data = data;
this.size = 1;
this.multiple = "";
this.doc = document;
this.onchange = "";
this.objeto = null;
}
// Push
function pushLista( valor ) {
if ( valor == null ) return null;
if( this.search( valor ) < 0 )
this.data[this.data.length] = valor;
}
listaDinamica.prototype.push = pushLista;
// Pop
function popLista( valor ) {
if ( valor == null ) valor = this.value();
var i = this.search( valor );
if ( i == -1 ) return null;
if( i > -1 ) {
for( var j = i+1; j < this.data.length; j++ )
this.data[j-1] = this.data[j];
this.data.length--;
return valor;
}
return null;
}
listaDinamica.prototype.pop = popLista;
// Length
function lengthLista() {
return this.data.length;
}
listaDinamica.prototype.length = lengthLista;
// Search
function searchLista( valor ) {
for( var i = 0; i < this.data.length; i++ )
if( this.data[i] == valor )
return i;
return -1;
}
listaDinamica.prototype.search = searchLista;
// Sort
function sortLista() {
if( this.data.length == 0 ) return;
for( var i = 0; i < this.data.length; i++ ) {
var min = i;
for( var j=i+1; j < this.data.length; j++ )
if( this.data < this.data )
min = j;
this.swap( i, min );
}
}
listaDinamica.prototype.sort = sortLista;
// Swap
function swapLista( i, j ) {
if( i == j ) return;
var aux = this.data[i];
this.data[i] = this.data[j];
this.data[j] = aux;
}
listaDinamica.prototype.swap = swapLista;
// toString
function toStringLista( sep ) {
if( sep == null ) sep = "_";
if( this.data.length <= 0 )
return "";
var res = this.data[0];
for( var i=1; i < this.data.length; i++ )
res += sep+this.data[i];
return res;
}
listaDinamica.prototype.toString = toStringLista;
// Write
function writeLista() {
var buffer = '';
buffer += '<!--INICIO LISTA DINAMICA "'+this.name+'"-->';
var onchange = this.onchange ? 'onchange="'+this.onchange+'"' : '';
buffer += '<select name="'+this.name+'" '+this.multiple+' size="'+this.size+'" '+onchange+'>';
buffer += '<option>--------------------------------------------------</option>';
for( var i = 0; i < this.data.length; i++ )
buffer += '<option>'+this.data[i]+'</option>';
buffer += '</select>';
buffer += '<!--FIN LISTA DINAMICA "'+this.name+'"-->';
this.doc.writeln( buffer );
this.objeto = this.frm.elements[this.name];
this.objeto.options[0] = null;
}
listaDinamica.prototype.write = writeLista;
// Refresh
function refreshLista() {
while( this.objeto.options.length > 0 )
this.objeto.options[0] = null;
for( var i = 0; i < this.data.length; i++ )
this.objeto.options[i] = new Option( this.data[i], this.data[i] );
}
listaDinamica.prototype.refresh = refreshLista;
// Clean
function cleanLista() {
while( this.data.length > 0 ) {
this.objeto.options[0] = null;
this.data.length--;
}
}
listaDinamica.prototype.clean = cleanLista;
// Index
function indexLista() {
return this.objeto.options.selectedIndex;
}
listaDinamica.prototype.index = indexLista;
// Value
function valueLista() {
if( this.index() > -1 )
return this.data[this.index()];
return null;
}
listaDinamica.prototype.value = valueLista;
formulario.html
Código :
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>DATOS</title>
</head>
<body>
<p> </p>
<form name="myform">
<script src="lista_dinamica.js"></script>
<script language="javascript"><!--
//Lista: Estado
var lista = new listaDinamica( document.myform, "lista", new Array( "Caracas", "Miranda", "Merida" ) );
lista.onchange = "actualizar()";
lista.write();
// Lista2 : Municipio
var lista2 = new listaDinamica( document.myform, "lista2", new Array( "Libertador") );
lista2.write();
//Lista3 : Parroquia
var lista3 = new listaDinamica( document.myform, "lista3", new Array( "Altagracia", "Libertador", "Antimano") );
//lista3.onchange = "actualizar()";
lista3.write();
function actualizar()
{
if( lista.value() == "Caracas" )
{
lista2.data = new Array( "Libertador" );
if( lista2.value() == "Libertador" )
{
lista3.data = new Array("Altagracia", "Libertador", "Antimano");
}
}
else if( lista.value() == "Miranda" )
{
lista2.data = new Array( "Acevedo", "Andrés Bello", "Baruta", "Brión", "Buroz", "Carrizal", "Chacao", "Cristóbal Rojas", "El Hatillo", "Guaicaipuro", "Independencia", "Lander", "Los Salias", "Páez", "Paz Castillo", "Pedro Gual", "Plaza", "Simón Bolívar", "Sucre", "Urdaneta", "Zamora");
if ( lista2.value == "Acevedo")
{
lista3.data = new Array ( "Acevedo" );
}
else if( lista2.value() == "Cristóbal Rojas" )
{
lista3.data = new Array( "Charallave", "Las Brisas" );
}
else if( lista2.value() == "Independencia" )
{
lista3.data = new Array( "Ocumare", "Santa Barbara" );
}
}
else if( lista.value() == "Merida" )
{
lista2.data = new Array( "Alberto Adriani", "Andrés Bello", "Antonio Pinto Salinas", "Aricagua", "Arzobispo Chacón", "Campo Elías", "Caracciolo Parra y Olmedo", "Cardenal Quintero", "Guaraque", "Julio César Salas", "Justo Briceño", "Libertador", "Miranda", "Obispo Ramos de Lora", "Padre Noguera", "Pueblo Llano", "Rangel", "Rivas Dávila", "Santos Marquina", "Sucre", "Tovar", "Tulio Febres Cordero", "Zea");
if( lista2.value == "Alberto Adriani")
{
lista3.data = new Array("Alberto Adriani");
}
else if( lista2.value == "Tovar")
{
lista3.data = new Array("Merida");
}
}
lista2.refresh();
lista3.refresh();
}
//--></script>
</form>
</body>
</html>
Si alguien puede explicar que estoy haciendo mal.
Muchas gracias.
