Comunidad de diseño web y desarrollo en internet online

JavaScript y Lista dinamica

Citar            
MensajeEscrito el 15 Oct 2006 07:04 am
Saludos, estoy intentado hacer un formulario con lista dinamica y ya estoy al borde de la locura, no entiendo porque no se actualiza la tercera lista.
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>&nbsp;</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.

Por cerm

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Oct 2006 01:00 pm
Lamento comunicarte que no conozco de nadie en este foro que sepa JavaScript como para eso, además no hay un sub-foro de JavaScript en Clab, y aunque este mensaje no cuadra aqui (no es ni XHTML ni CSS) no lo moveré porque no hay a donde.

Te sugiero que visites forosdelweb.com

Por Ramm

BOFH

3152 de clabLevel

6 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell REC Héroes

London, UK

firefox
Citar            
MensajeEscrito el 16 Oct 2006 04:14 pm
Gracias. :)

Por cerm

1 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.