【问题标题】:Avoid display duplicate elements in table避免在表格中显示重复元素
【发布时间】:2018-11-01 00:47:15
【问题描述】:

所以我在 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();
  });
});

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

【问题讨论】:

    标签: javascript jquery duplicates display


    【解决方案1】:

    保存时,需要先清除表中已有的数据,否则调用save时会再次添加到表中。这样做的方法如下:

    $(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();
        });
    });
    

    【讨论】:

      猜你喜欢
      • 2023-03-27
      • 2010-11-18
      • 2012-10-16
      • 1970-01-01
      • 2013-07-28
      • 2013-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多