Ver Mensaje Individual
  #15 (permalink)  
Antiguo 09/12/2009, 16:29
Avatar de neodani
neodani
 
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 2 meses
Puntos: 20
Respuesta: Crear y remover inputs

Cita:
Iniciado por zerokilled Ver Mensaje
en rojo el codigo modificado. fijate lo que hace es simple: obtiene un clon de la fila, a ese clon le agrega el boton, y finalmente agrega el clon al elemento contenedor. en este caso asumo que lo agregarias al elemento contenedor porque de lo contrario no se que sentido tiene crear un DIV y agregarlo al DIV productos.
Código:
  ele.className = 'removelink';
  ele.innerHTML = 'Eliminar';
  
  var clone = fi.firstChild.cloneNode(true);
  clone.appendChild(ele);
  contenedor.appendChild(clone);

}
en todo caso, todavia tienes trabajo que hacer. ahora te toca ajustar la funcion de eliminar la fila.
Tengo lo que me has dicho y he modificado el boton eliminar, ahora ya elimina correctamente. Pero salgo de una y caigo en otra.

¿Puede decirme porque sucede esto?

Nada más mostrar la página me aparece los 4 inputs y abajo el botón añadir (esto no está mal del todo, pero a diferencia del código del post (6 más abajo, donde consigo que funcione declarando cada input por separado)
Cuando pulso sobre Añadir, me los agrega debajo de este boton en lugar de arriba, por lo que queda raro raro, ademas la primera fila se queda sin botón "eliminar" :S:S:S

Si puedes ejecutar el código veras las paranoias que le dan...

Código javascript:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  2. <html>
  3. <head>
  4. <title>Crear input file - http://www.telefonica.net/web2/blas-mar/crear.html</title>
  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  6. <style>
  7. body, td, th, div, p {
  8. color:#000000;
  9. font-family:"Lucida Grande",Verdana,Arial,Helvetica,sans-serif;
  10. font-size:small;
  11. }
  12. input {
  13. margin:0.3em;
  14. }
  15. a.removelink {
  16. background:transparent url(delete.png) no-repeat scroll 4px 0;
  17. color:#999999;
  18. font-size:0.9em;
  19. padding:1px 0 1px 24px;
  20. text-decoration:none;
  21. }
  22. a.addlink {
  23. background:transparent url(add.png) no-repeat scroll left top;
  24. color:#999999;
  25. font-size:0.9em;
  26. padding:1px 0 1px 20px;
  27. text-decoration:none;
  28. cursor:pointer;
  29. }
  30. </style>
  31. <script type="text/javascript">
  32. <!--
  33. num=0;
  34. function crear(obj) {
  35.   num++;
  36.   fi = document.getElementById('productos');
  37.   contenedor = document.createElement('div');
  38.   contenedor.id = 'div'+num;
  39.   fi.appendChild(contenedor);
  40.  
  41.   // boton eliminar
  42.   ele = document.createElement('a');
  43.   ele.href = '#';
  44.   ele.name = 'div'+num;
  45.   ele.onclick = function () {borrar(this.name)}
  46.   ele.className = 'removelink';
  47.   ele.innerHTML = 'Eliminar';
  48.  
  49.   var clone = fi.firstChild.cloneNode(true);
  50.   clone.appendChild(ele);
  51.   contenedor.appendChild(clone);
  52. }
  53. function borrar(obj) {
  54.   fi = document.getElementById('productos');
  55.   fi.removeChild(document.getElementById(obj));
  56. }
  57. -->
  58. </script>
  59.  
  60. </head>
  61. <body>
  62. <form method="post" action="#">
  63. <div id="productos"><p>
  64. <input type="text" value="" size="5" name="cantidad"/>
  65. <input type="text" value="" size="30" name="descripcion"/>
  66. <input type="text" value="" size="5" name="precio"/>
  67. <input type="text" value="" size="5" name="total"/>
  68. </p>
  69. <a title="Añadir otra fila" class="addlink" onclick="crear(this)">Añadir</a></div>
  70. <div>
  71. <div>
  72. </form>
  73. </body>
  74. </html>

Muchas gracias de antemano!