-1

I created a todo app to add and remove tasks on the page.
however i would like to keep todo results when browser refreshed . Is that possible to make this like storing data on db or any storage to save these results? any idea to make this to save data ??

Now I posted the complete code hereee! because i cant posted code here before

let menu = document.querySelector(".bs");
let btn1 = document.querySelector(".btn");
let btn2 = document.querySelector(".btn3");
 
 let irp = document.querySelector(".date");
let inp = document.querySelector(".input");
let bsd = document.querySelector(".sss");
let brs  = document.querySelector(".marker");

let addBr = () => {
  btn1.addEventListener("click", addBr);

  let br = document.createElement("DIV");
  let dd  =  document.createElement("H1");
  dd.innerHTML = (inp.value);
  br.className = "red";
  var bn = document.createElement("H1");
  bn.innerHTML = (irp.value);
  


  menu.appendChild(br);
  br.appendChild(dd);
    br.appendChild(bn);

  if(  inp.value == "") {
            br.remove();

  }
  
  else {
       menu.appendChild(br);

  }
  
  
  if(  irp.value == "") {
   dd.innerHTML = "Albenis";

  
  }
  
  else {
       menu.appendChild(br);

  }

  
  let ttt = document.createElement("BUTTON");
  ttt.className = "marker";
  ttt.innerHTML = "Remove";
  br.appendChild(ttt);
  
  // This is the important change. Part of creating the .ttt element
  // is setting up its event listeners!
  ttt.addEventListener('click', () => br.remove());
  
};

btn1.addEventListener("click", addBr);

// Call `addBr` once to add the initial element
addBr();
<html>

<body>


<div class="bs">



<input type="text" class="input">
<input type="date" class="date">
<button class="btn">
Add
</button>
</div>

</body>
</html>

1 Answers1

2

TL;DR: use localStorage to read the items at page load and write the items when they change, like in the final version

To keep your todo entries, you need to store it in a Database. This can be either a local database in the website like localStorage. Or you need to build a backend which is connected to a Database and send and load the Data from there.

localStorage example:

const items = [{ name: "My Todo" }, { name: "My Todo 2" }];

const setItems = () => {
  localStorage.setItem("items", JSON.stringify(items));
};

const getItems = () => {
  return JSON.parse(localStorage.getItem("items"));
};

Including your code:

const getItems = () => {
  return JSON.parse(localStorage.getItem("items"));
};

const items = getItems() || [];

const setItems = () => {
  localStorage.setItem("items", JSON.stringify(items));
};

let addBr = (item) => {
  let br = document.createElement("DIV");
  let dd  =  document.createElement("H1");
  dd.innerHTML = (item ? item.name : inp.value);
  br.className = "red";
  var bn = document.createElement("H1");
  bn.innerHTML = (item ? item.name : irp.value);

  if (!item) {
    items.push({ name: inp.value });
    setItems();
  }

  menu.appendChild(br);
  br.appendChild(dd);
    br.appendChild(bn);

  if(  inp.value == "") {
            br.remove();

  }

  else {
       menu.appendChild(br);

  }


  if(  irp.value == "") {
   dd.innerHTML = "Albenis";


  }

  else {
       menu.appendChild(br);

  }


  let ttt = document.createElement("BUTTON");
  ttt.className = "marker";
  ttt.innerHTML = "Remove";
  br.appendChild(ttt);

  // This is the important change. Part of creating the .ttt element
  // is setting up its event listeners!
  ttt.addEventListener('click', () => br.remove());
};

for (const item of items) {
  addBr(item);
}

btn1.addEventListener("click", () => addBr());
ardean
  • 152
  • 7