避免在表格中显示重复元素

时间:2018-05-22 09:41:09

标签: javascript jquery duplicates display

所以我在localStorage中保存了一些数据。

我把它们从本地存储区拿回到桌面。

当我点击按钮输入新数据时,之前输入的数据会在表格中重复显示。当我刷新页面时,一切都很好。

$(document).ready(function() {
  function save() {

    list.forEach(function(item) {

      var nameNode = document.createTextNode(item.name);
      var surnameNode = document.createTextNode(item.surname);
      var dataNode = document.createTextNode(item.data);
      var nrNode = document.createTextNode(item.nr);

      var tdName = document.createElement("td");
      var tdSurname = document.createElement("td");
      var tdData = document.createElement("td");
      var tdNr = document.createElement("td");

      tdName.appendChild(nameNode);
      tdSurname.appendChild(surnameNode);
      tdData.appendChild(dataNode);
      tdNr.appendChild(nrNode);

      var tr = document.createElement("tr");

      tr.appendChild(tdName);
      tr.appendChild(tdSurname);
      tr.appendChild(tdData);
      tr.appendChild(tdNr);
      // download table and insert cells and rows
      var table = document.getElementById("table");
      table.appendChild(tr);

    });
  }

  list = jQuery.parseJSON(localStorage.getItem("osoba") === null ? [] : localStorage.getItem("osoba"));
  save();

  $("#send").click(function() {

    var osoba = {};
    osoba["name"] = document.getElementById("name").value;
    osoba["surname"] = document.getElementById("subname").value;
    osoba["data"] = document.getElementById("date_bth").value;
    osoba["nr"] = document.getElementById("numer_phone").value;

    list.push(osoba);

    localStorage.setItem("osoba", JSON.stringify(list));
    document.getElementById("name").value = "";
    document.getElementById("surname").value = "";
    document.getElementById("date_bth").value = "";
    document.getElementById("numer_phone").value = "";
    save();
  });
});

如何在不重新加载页面的情况下避免表中的重复?

1 个答案:

答案 0 :(得分:1)

保存时,您需要先清除表中已有的数据,否则在调用保存时会再次将其添加到表中。这是你如何做到的:

$(document).ready(function(){

    function save() {
        $("#table tr").remove(); // <- this

        list.forEach(function (item) {

            var nameNode = document.createTextNode(item.name);
            var surnameNode = document.createTextNode(item.surname);
            var dataNode = document.createTextNode(item.data);
            var nrNode = document.createTextNode(item.nr);

            var tdName = document.createElement("td");
            var tdSurname = document.createElement("td");
            var tdData = document.createElement("td");
            var tdNr = document.createElement("td");

            tdName.appendChild(nameNode);
            tdSurname.appendChild(surnameNode);
            tdData.appendChild(dataNode);
            tdNr.appendChild(nrNode);

            var tr =document.createElement("tr");

            tr.appendChild(tdName);
            tr.appendChild(tdSurname);
            tr.appendChild(tdData);
            tr.appendChild(tdNr);

            // download table and insert cells and rows
            var table = document.getElementById("table");
            table.appendChild(tr);

        });
    }

    list = jQuery.parseJSON(localStorage.getItem("osoba") === null ? [] : localStorage.getItem("osoba"));
    save();

    $("#send").click(function(){

        var osoba = {};
        osoba["name"] = document.getElementById("name").value;
        osoba["surname"] = document.getElementById("subname").value;
        osoba["data"] = document.getElementById("date_bth").value;
        osoba["nr"] = document.getElementById("numer_phone").value;

        list.push(osoba);

        localStorage.setItem("osoba",JSON.stringify(list));
        document.getElementById("name").value="";
        document.getElementById("surname").value="";
        document.getElementById("date_bth").value="";
        document.getElementById("numer_phone").value="";
        save();
    });
});