tengo esta funcion:
function event_erase_nota (){ document.addEventListener('click', (e)=> { let elementParent = e.target.parentNode; if (elementParent.className == 'delete'){ id = elementParent.parentNode.id; console.log(id) erase_nota(id) } }) } event_erase_nota()Detecte cuándo se hace clic en un div con la clase 'eliminar' y llame a la función erase_nota que está en otro archivo.
function erase_nota (id) { const request = indexedDB.open("noto", 1); request.onsuccess = (event) => { var db = event.target.result; let trx = db.transaction("nota", "readwrite"); let request = trx.objectStore("nota").delete(id); trx.oncomplete = function () { console.log("Nota eliminada") db.close(); } } }¡Pero las notas almacenadas en la base de datos no se borran! Cuando llamo a la función 'erase_nota(someId)' en la consola funciona bien.
¿Qué ocurre?
El problema era el tipo de la variable id:
if (elementParent.className == 'delete'){ id = elementParent.parentNode.id; console.log(id) erase_nota(id) //Revisé el tipo de identificación y era una cadena, así que la convertí a Número,
if (elementParent.className == 'delete'){ id = elementParent.parentNode.id; console.log(id) erase_nota(Number(id))¡Ahora funciona!
Probar:
let trx = db.transaction(["nota"], "readwrite");