• Viernes 8 de Noviembre de 2024, 20:49

Autor Tema:  Porque No Funciona Este Codigo En Ie  (Leído 2609 veces)

Garfield07

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Porque No Funciona Este Codigo En Ie
« en: Lunes 8 de Octubre de 2007, 21:51 »
0
Como puedo hechar andar este codigo en Internet Explorer, funciona bien solo en FireFox, pero como en la oficina donde trabajo la mayoria tiene internet explorer y la verdad no quieren cambiarse de navegador... la idea es cargar los datos de una tabla en un ListBox1, y a traves de un boton se puedan agregar el Items seleccionado a un segundo ListBox2 (de este se puedan eliminar los Items), el siguiente codigo funciona bien en FireFox, pero no en IE.

Código: Text
  1.  
  2. <html>
  3.  <head>
  4.  
  5.   <style type="text/css">
  6.    select {
  7.      width: 300px;
  8.      height: 100px;
  9.    }
  10.   </style>
  11.  
  12.   <script type="text/javascript">
  13.   
  14.    function AddToSecondList(){
  15.      var fl = document.getElementById('firstlist');
  16.      var sl = document.getElementById('secondlist');    
  17.      for (i = 0; i < fl.options.length; i++){
  18.        if(fl.options[i].selected){
  19.          sl.add(fl.options[i],null);
  20.        }
  21.      }
  22.      return true;
  23.    }
  24.   
  25.    function DeleteSecondListItem(){
  26.      var fl = document.getElementById('firstlist');
  27.      var sl = document.getElementById('secondlist');    
  28.      for (i = 0; i < sl.options.length; i++){
  29.        if(sl.options[i].selected){
  30.          fl.add(sl.options[i],null);
  31.        }
  32.      }
  33.      return true;
  34.    }
  35.   
  36.   </script>
  37.  
  38.  </head>
  39.  <body>  
  40.  
  41. <?php
  42.  function Conectarse()
  43.  {
  44.   if (!($link=mysql_connect("localhost","root","pollpoly")))
  45.   {
  46.       echo "Error conectanddo a la base de datos...";
  47.       exit();
  48.   }
  49.   if (!mysql_select_db("correspondencia",$link))
  50.   {
  51.       echo "Error seleccionando la base de datos...";
  52.       exit();
  53.   }
  54.       return $link;
  55.  }
  56.  function personalc()
  57.  {
  58.   $link=Conectarse();
  59.   $sql="SELECT Nombre_personal FROM personalcapaseg";
  60.   $result=mysql_query($sql, $link);
  61.   $i=0;
  62.   while ($row=mysql_fetch_row($result))
  63.    {
  64.        echo "<option value=".$row[$i].">".$row[$i]."</option>\n";
  65.    }
  66.  }
  67. ?>
  68.   <form action="none">
  69.    <div>
  70.     <select id="firstlist" multiple="multiple">
  71.        <?php personalc();?>
  72.     </select>
  73.  
  74. <br>
  75.     <input type="button" value="Agregar"
  76.      onclick="AddToSecondList();" /input>
  77.     <input type="button" value="Eliminar"
  78.       onclick="DeleteSecondListItem();" /input>  
  79. <br>
  80.     <select id="secondlist" multiple="multiple">
  81.     </select>  
  82.  
  83.   </div>
  84.   
  85.   </form>
  86.  </body>
  87. </html>  
  88.  
  89.  

espero me puedan ayudar... de momento muchas gracias.... :unsure:

ing_marco

  • Miembro MUY activo
  • ***
  • Mensajes: 263
    • Ver Perfil
Re: Porque No Funciona Este Codigo En Ie
« Respuesta #1 en: Miércoles 10 de Octubre de 2007, 00:54 »
0
Me parece que la funcion Add, debes de utilizarla de esta forma:

Código: Text
  1. MyList.options.add(opt, index)
  2.  
segun veo tu lo utilizas de esta forma:
Citar
sl.add(fl.options,null);
seria cosa de agregarle lo siguente:
Código: Text
  1. sl.options.add(fl.options[i],null);
  2.  
  3.  

Espero esta te sea de utilidad.
MARCO DIAZ
Ing_Marco
Bachiller Ing de Sistemas.
UNT
Trujillo-Peru

Garfield07

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Porque No Funciona Este Codigo En Ie
« Respuesta #2 en: Miércoles 10 de Octubre de 2007, 16:55 »
0
desafortunadamente no funciono para IE, de todos modos te paso el dato corregido de esta manera...
cambie esta linea (en el metodo agregar):
Citar
sl.add(fl.options,null);
por esta otra
Código: Text
  1. sl.options[sl.options.length] = new Option(fl.options[i].text, 1);
  2.  
y para el metodo de eliminar:
Citar
fl.add(sl.options,null);
por esta otra
Código: Text
  1. sl.options[i] = null;
  2.  

solo que tengo otro error (o tal vez no sea error  :( ) que con el codigo que tengosolo se puede agregar una sola vez el item seleccionado, ya que al agregar al segundo listbox2 (este item se elimina del listbox1)...

espero me puedas ayudar... (hago la aclaracion que como yo lo tenia era haciendo uso de la tecnologia DOM que no funciona para IE)

de todos modos te agradezco tu respuesta..
saludos...

Altareum

  • Miembro MUY activo
  • ***
  • Mensajes: 327
    • Ver Perfil
    • http://www.avian.com.ar
Re: Porque No Funciona Este Codigo En Ie
« Respuesta #3 en: Miércoles 10 de Octubre de 2007, 21:55 »
0
Hola Garfield07....

Intenta utilizar lo siguiente, que es el método básico para agregar nodos en el DOM:

Código: Text
  1.  
  2. var select = document.getElementById('firstlist');
  3.  
  4. var newOption = document.createElement('option');
  5. newOption.value=2;
  6. newOption.text='Opcion';
  7. select.appendChild(newOption);
  8.  
  9.  

En el caso de que esta línea no funcione en IE:
newOption.text='Opcion';

Pon esto:
Código: Text
  1.  
  2. newOption.appendChild(document.createNode('Opcion'));
  3.  
  4.  


Altareum.
El postre!, el postre!, el postre!, el postre!, el postre!, el postre!.....
 | Klinka | Kiree | Avian |

Garfield07

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Porque No Funciona Este Codigo En Ie
« Respuesta #4 en: Miércoles 10 de Octubre de 2007, 22:36 »
0
:( disculpa mi ignorancia    Altareum, donde pongo el codigo que me indicaste, o que cambio para que funcione mi codigo... disculpame, pero apenas me inicio en la programacion de javascritps, php...etc...

antes ya Saludos...

ing_marco

  • Miembro MUY activo
  • ***
  • Mensajes: 263
    • Ver Perfil
Re: Porque No Funciona Este Codigo En Ie
« Respuesta #5 en: Jueves 11 de Octubre de 2007, 16:13 »
0
Permiteme tratar de responder tu respuesta:
Segun tu codigo y mostado por nuestro amigo Altareum.
El nuevo codigoquedaria de la sigueinte manera, ojo tener presenta la observacion para IE que Altareum hizo presente.
 
Código: Text
  1. function AddToSecondList(){
  2.     var select = document.getElementById('firstlist');
  3.      var sl = document.getElementById('secondlist');    
  4.     for (i = 0; i < fl.options.length; i++){
  5.       if(fl.options[i].selected){
  6.         var newOption = document.createElement('option');        
  7.         newOption.value=i;
  8.         newOption.text=fl.options[i].text;
  9.         sl.appendChild(newOption);
  10.       }
  11.     }
  12.     return true;
  13.   }
  14.  
MARCO DIAZ
Ing_Marco
Bachiller Ing de Sistemas.
UNT
Trujillo-Peru