• Sábado 20 de Abril de 2024, 14:09

Autor Tema:  Alguna Idea? Combos Y Js  (Leído 1598 veces)

moonshadow88

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Alguna Idea? Combos Y Js
« en: Jueves 13 de Diciembre de 2007, 11:51 »
0
Tengo una página web con un combo y un boton que me abre un popup. Desde ese popup quiero insertar un nuevo option en el combo de la ventana padre y no hay manera. alguna idea?

os pongo el código:

fichero: main.html
Código: Text
  1.  
  2. <html>
  3. <head>
  4.   <title>prueba</title>
  5. <head>
  6. <script language="javascript">
  7.   function haz(){
  8.     window.open("popup.html","","top=0; left=0; height=350; width=450; location: no; status: no; scrollbars: yes;");
  9.   }
  10. </script>  
  11. <body>
  12.   <select name="slct" id="slct" size="5">
  13.     <option value="sin valor">sin texto</option>
  14.   </select>
  15. <input type="button" value="accion" onClick="javascript:haz();"><br>
  16. <input type="text" name="texto" id="texto" value="texto antes de modif" size="50">
  17. </body>
  18. </html>
  19.  
  20.  

fichero: popup.html
Código: Text
  1.  
  2. <html>
  3. <head>
  4.   <title>pop up</title>
  5. <head>
  6. <script language="javascript">
  7.   function acc(){
  8.     var TmpOpt = new Option("opcion1.jpg","opcion1.jpg");
  9.     var obj = top.window.opener.document.getElementById('slct');
  10.     var obj2 = document.getElementById('slct2');
  11.     var obj3 = top.window.opener.document.getElementById('texto');
  12.     document.getElementById("log").value = document.getElementById("log").value + "objeto texto: " + obj3+"\n";
  13.     document.getElementById("log").value = document.getElementById("log").value + "objeto texto.text: " + obj3.value+"\n";
  14.     document.getElementById("log").value = document.getElementById("log").value + "objeto select: " + obj+"\n";
  15.     document.getElementById("log").value = document.getElementById("log").value + "objeto select.type local: " + obj2.type+"\n";
  16.     document.getElementById("log").value = document.getElementById("log").value + "objeto select.type remoto: " + obj.type+"\n";
  17.     document.getElementById("log").value = document.getElementById("log").value + "objeto tmpopt: " + TmpOpt+"\n";
  18.     document.getElementById("log").value = document.getElementById("log").value + "valor tmpopt: " + TmpOpt.value+"\n";
  19.     document.getElementById("log").value = document.getElementById("log").value + "texto tmpopt: " + TmpOpt.text+"\n";
  20.     document.getElementById("log").value = document.getElementById("log").value + "objeto select options: " + obj.options+"\n";
  21.     document.getElementById("log").value = document.getElementById("log").value + "objeto select options[0].value: " + obj.options[0].value+"\n";
  22.     document.getElementById("log").value = document.getElementById("log").value + "objeto select options[0].text: " + obj.options[0].text+"\n";
  23.     obj3.value = "texto cambiado desde ventana remota";
  24.     obj2.options[1] = TmpOpt;
  25.     obj.options[1] = TmpOpt;     // por que no funciona esto?????
  26.   }
  27. </script>  
  28. <body>
  29.   <input type="button" value="accion" onClick="javascript:acc();"><br><br>
  30.   <textarea name="log" cols="50" rows="12"></textarea>
  31.   <select name="slct2" id="slct" size="3">
  32.     <option value="sin valor local">sin texto local</option>
  33.   </select>
  34. </body>
  35. </html>
  36.  
  37.  

JrcsDev

  • Miembro MUY activo
  • ***
  • Mensajes: 245
  • Nacionalidad: ve
    • Ver Perfil
    • http://codigo7.wordpress.com/
Re: Alguna Idea? Combos Y Js
« Respuesta #1 en: Lunes 5 de Mayo de 2008, 15:23 »
0
Pienso que para esto necesitarias especificar más... por ejemplo, suponiendo que las opciones del combo las cargues desde la base de datos, entonces podrías usar ajax para insertar registros en la tabla. Pero si tu combo se carga directamente de código HTML, entonces puedes crear un objeto option de javascript...
Sígueme en Twitter]
Donar comida a los chicos necesitados!
Todo lo puedo en Cristo que me fortalece...

posman

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Alguna Idea? Combos Y Js
« Respuesta #2 en: Lunes 5 de Mayo de 2008, 16:34 »
0
Alguna vez me paso el mismo problema. No se cual haya sido la causa. Tal vez el problema sean las referencias de memoria entre los objetos creados en una ventana hija y hacer referencia a ellos desde la ventana padre. Seguramente habra una explicacion mas "cientifica", pero cambie un poco el codigo que pusiste. Lo que hice fue agregar una funcion "agregar" (que original, verdad?) a la pagina principal para que ella misma cree el objeto. Y en el popup, se manda llamar esa funcion.

main.html
Código: Text
  1.  
  2. function agregar(param1,param2) {
  3.   var obj = document.getElementById("slct");
  4.   obj.options[obj.options.length] = new Option(param1, param2);
  5. }
  6. function haz() {
  7.     window.open("popup.html","","top=0; left=0; height=350; width=450; location: no; status: no; scrollbars: yes;");
  8. }
  9.  
  10.  

popup.html

Código: Text
  1.  
  2. function acc() {
  3.     //var TmpOpt = window.opener.crear("opcion1.jpg","opcion1.jpg");
  4.   dato1 = "opcion1.jpg"
  5.   valor1 = "opcion1.jpg"
  6.     var TmpOpt = new Option(dato1,valor1);
  7.     var obj = top.window.opener.document.getElementById('slct');
  8.     var obj2 = document.getElementById('slct2');
  9.     var obj3 = top.window.opener.document.getElementById('texto');
  10.     log = document.getElementById("log");
  11.     log.value += "objeto texto: " + obj3+"\n";
  12.     log.value += "objeto texto.text: " + obj3.value+"\n";
  13.     log.value += "objeto select: " + obj+"\n";
  14.     log.value += "objeto select.type local: " + obj2.type+"\n";
  15.     log.value += "objeto select.type remoto: " + obj.type+"\n";
  16.     log.value += "objeto tmpopt: " + TmpOpt+"\n";
  17.     log.value += "valor tmpopt: " + TmpOpt.value+"\n";
  18.     log.value += "texto tmpopt: " + TmpOpt.text+"\n";
  19.     log.value += "objeto select options: " + obj.options+"\n";
  20.     log.value += "objeto select options[0].value: " + obj.options[0].value+"\n";
  21.     log.value += "objeto select options[0].text: " + obj.options[0].text+"\n";
  22.     obj3.value = "texto cambiado desde ventana remota";
  23.     obj2.options[1] = TmpOpt;
  24.     try {
  25.     //obj.options[1] = TmpOpt;     // por que no funciona esto?????}
  26.     window.opener.agregar(dato1,valor1);
  27.   }
  28.   catch(e) {
  29.     alert(e.message);
  30.   }
  31.   }
  32.  
  33.