Foros del Web » Programando para Internet » Javascript »

Error, eliminar elementos

Estas en el tema de Error, eliminar elementos en el foro de Javascript en Foros del Web. Hola buenas noches, estoy empezando con javascript y me dio por crear una "lista de la compra", puedo añadir elementos con total normalidad, pero tengo ...
  #1 (permalink)  
Antiguo 30/12/2015, 16:07
 
Fecha de Ingreso: octubre-2015
Ubicación: Valencia
Mensajes: 9
Antigüedad: 9 años, 1 mes
Puntos: 1
Error, eliminar elementos

Hola buenas noches, estoy empezando con javascript y me dio por crear una "lista de la compra", puedo añadir elementos con total normalidad, pero tengo un gran problema a la hora de querer eliminar varios elementos.

html
Código HTML:
Ver original
  1. <div class="ingresar">
  2.         <input type="text" id="botton" name="ingresar" maxlength="20" onfocus="" placeholder="añadir a la lista">
  3.         <input type="submit" id='enviar' value="añadir" onclick="enviar()">
  4.     </div>
  5.     <div id="contenido">
  6.         <ul id="lista"></ul>
  7.     </div>
Código Javascript:
Ver original
  1. contador = 0;
  2.             valor = 0;
  3.             n=0;
  4.             function enviar () {
  5.                 var botton = document.getElementById('botton');
  6.                 var contenido = document.getElementById('botton').value;
  7.                 var lista = document.getElementById('lista');
  8.  
  9.                 if (contenido == '') {
  10.                     var ingresar = document.getElementsByClassName('ingresar');
  11.                     if (contador== 0) {
  12.                         ingresar[0].innerHTML += '<p id="error">No ha escrito nada, por favor añada un elemento a la lista</p>';
  13.                         contador++;
  14.                     }
  15.                     else {
  16.                        
  17.                     }
  18.                 }
  19.                 else{
  20.                     if (contador == 1) {
  21.                         var parrafo =document.getElementById('error');
  22.                         parrafo.parentNode.removeChild(parrafo);
  23.                     }
  24.  
  25.                     lista.innerHTML += "<li class='compra"+n+"'><span class='borrar'>x</span>" + contenido+ "</li>";
  26.                     valor++;
  27.                     n++;
  28.                    
  29.                 }
  30.                 botton.value='';
  31.                 borrar();
  32.             }
  33.  
  34.             function borrar () {
  35.                 compras = document.getElementsByTagName('li');
  36.                 for (var i = 0; i < compras.length; i++) {
  37.                     eliminar(i);
  38.                 };
  39.  
  40.             }
  41.             function eliminar (argument) {
  42.                 var borrar = document.getElementsByClassName('borrar');
  43.                 borrar[argument].addEventListener('click',function  () {
  44.                     compras[argument].remove();
  45.                 })
  46.             }
Al añadir por ejemplo 6 elementos LI Y querer eliminar de forma aleatoria me da fallos en la funcion remove().
He probado en añadir una funcion que vaya actualizando el array de elemetos añadidos pero aun así no puedo o quizá lo este haciendo mal. ):
SALUDOS!!
  #2 (permalink)  
Antiguo 31/12/2015, 02:01
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Error, eliminar elementos

¿Y cuál es el fallo en concreto?

Estoy notando que utilizas a la variable compras dentro del callback que a su vez está en la función eliminar(), sin embargo, nunca la pasaste como argumento, por lo que ahí no posee valor alguno.

Un saludo
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 31/12/2015, 05:50
 
Fecha de Ingreso: octubre-2015
Ubicación: Valencia
Mensajes: 9
Antigüedad: 9 años, 1 mes
Puntos: 1
Respuesta: Error, eliminar elementos

Bueno, mira el fallo es este:(es un gif)
[URL="http://gfycat.com/FearlessTatteredArmadillo"]http://gfycat.com/FearlessTatteredArmadillo[/URL]

al parecer no actualiza el array de los elementos LI una vez ejecutada la funcion eliminar
y por lo que veo los valores que pasa la funcion Borrar quedan obsoletos al no actualizarse.
Y no veo como puedo hacerlo
Gracias.

Última edición por jaskonio; 31/12/2015 a las 05:52 Razón: fallo gif
  #4 (permalink)  
Antiguo 31/12/2015, 09:40
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Error, eliminar elementos

Es por lo que te dije en mi anterior respuesta; la variable compras no está definida en el contexto del callback que ejecutas con el evento click. Pásala como argumento a la función cuando hagas la llamada en el bucle.

Un saludo
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: javascript-funciones, javascript-function, remove
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:19.