Programación Web y Scripting > JavaScript
Porque No Funciona Este Codigo En Ie
Garfield07:
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 --- <html> <head> <style type="text/css"> select { width: 300px; height: 100px; } </style> <script type="text/javascript"> function AddToSecondList(){ var fl = document.getElementById('firstlist'); var sl = document.getElementById('secondlist'); for (i = 0; i < fl.options.length; i++){ if(fl.options[i].selected){ sl.add(fl.options[i],null); } } return true; } function DeleteSecondListItem(){ var fl = document.getElementById('firstlist'); var sl = document.getElementById('secondlist'); for (i = 0; i < sl.options.length; i++){ if(sl.options[i].selected){ fl.add(sl.options[i],null); } } return true; } </script> </head> <body> <?php function Conectarse() { if (!($link=mysql_connect("localhost","root","pollpoly"))) { echo "Error conectanddo a la base de datos..."; exit(); } if (!mysql_select_db("correspondencia",$link)) { echo "Error seleccionando la base de datos..."; exit(); } return $link; } function personalc() { $link=Conectarse(); $sql="SELECT Nombre_personal FROM personalcapaseg"; $result=mysql_query($sql, $link); $i=0; while ($row=mysql_fetch_row($result)) { echo "<option value=".$row[$i].">".$row[$i]."</option>\n"; } }?> <form action="none"> <div> <select id="firstlist" multiple="multiple"> <?php personalc();?> </select> <br> <input type="button" value="Agregar" onclick="AddToSecondList();" /input> <input type="button" value="Eliminar" onclick="DeleteSecondListItem();" /input> <br> <select id="secondlist" multiple="multiple"> </select> </div> </form> </body></html>
espero me puedan ayudar... de momento muchas gracias.... :unsure:
ing_marco:
Me parece que la funcion Add, debes de utilizarla de esta forma:
--- Código: Text ---MyList.options.add(opt, index) segun veo tu lo utilizas de esta forma:
--- Citar ---sl.add(fl.options,null);
--- Fin de la cita ---
seria cosa de agregarle lo siguente:
--- Código: Text ---sl.options.add(fl.options[i],null);
Espero esta te sea de utilidad.
Garfield07:
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);
--- Fin de la cita ---
por esta otra
--- Código: Text ---sl.options[sl.options.length] = new Option(fl.options[i].text, 1); y para el metodo de eliminar:
--- Citar --- fl.add(sl.options,null);
--- Fin de la cita ---
por esta otra
--- Código: Text ---sl.options[i] = null;
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:
Hola Garfield07....
Intenta utilizar lo siguiente, que es el método básico para agregar nodos en el DOM:
--- Código: Text --- var select = document.getElementById('firstlist'); var newOption = document.createElement('option');newOption.value=2;newOption.text='Opcion';select.appendChild(newOption);
En el caso de que esta línea no funcione en IE:
newOption.text='Opcion';
Pon esto:
--- Código: Text --- newOption.appendChild(document.createNode('Opcion'));
Altareum.
Garfield07:
:( 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...
Navegación
[#] Página Siguiente
Ir a la versión completa