Сохранять элементы, добавленные в JavaScript, после обновления страницы - PullRequest
1 голос
/ 02 июля 2019

Я хочу, чтобы мои добавленные <tr> элементы оставались неизменными после обновления страницы.

Например, когда я регистрирую пользователя, данные добавляются в строку таблицы. Я хочу добавить новых пользователей, но я хочу, чтобы те, кого я добавил ранее, тоже оставались в таблице.

$("#tesdiq").click(function () 
    $(".regForm").hide();
    $(".myTable").show();

    var ad = $("#ad").val();
    var soyad = $("#soyad").val();
    var email = $("#email").val();
    var sheher = $("#sheher").val();

    var infolar = ("<tr><td>" + ad + "</td>" + "<td>" + soyad + "</td>" + "<td>" + email + "</td>" + "<td>" + sheher + "<td>" + "<input type='checkbox' name='sil'></td></tr>");

    $(".myTable table tbody").append(infolar);


localStorage.setItem("ad", ad);
localStorage.setItem("soyad",soyad);
localStorage.setItem("email",email);
localStorage.setItem("sheher",sheher);

Я пробовал это, но это работает только один раз:

var myUser = localStorage.getItem("ad");

if (myUser) {

  var yeni = ("<tr><td>" + localStorage.getItem("ad") + "</td>" +
    "<td>" + localStorage.getItem("soyad") + "</td>" +
    "<td>" + localStorage.getItem("email") + "</td>" +
    "<td>" + localStorage.getItem("sheher") +
    "<td>" + "<input type='checkbox' name='sil'></td></tr>");
    
  $(".myTable table tbody").append(yeni);
  
}

Ответы [ 3 ]

0 голосов
/ 02 июля 2019

Вы не можете оставаться прежними на странице после обновления, так как она работает на событии клика

$("#tesdiq").click(function () {}

Вы должны написать это при событии onload, тогда оно будет там после обновления

0 голосов
/ 02 июля 2019

Я рекомендую использовать JSON для сохранения данных формы в виде объектов в массиве.

Вы можете сериализовать данные формы, создать объект и поместить его в массив.Затем используйте JSON.stringify, чтобы преобразовать полученный массив объектов в строку JSON и сохранить его в локальном хранилище.Когда вы извлекаете данные из локального хранилища, вы можете использовать JSON.parse, чтобы преобразовать JSON обратно в массив объектов.Затем вы можете добавить данные из этих объектов в таблицу HTML.

Похоже, вы используете jQuery, поэтому я использовал это в своем примере:

//localStorage.clear();

let $form = $('#regForm');
let $table = $('#userTable');

// get and parse local storage JSON
let regData = localStorage.hasOwnProperty('regData')
  ? JSON.parse(localStorage.getItem('regData'))
  : [];

// function to add row to table
function addTableRow(row) {
  let $thisRow = $('<tr>');
  $.each(row, function() {
    $('<td>', {
      'text': this
    }).appendTo($thisRow);
  });
  $thisRow.appendTo($table);
}

// add rows from local storage to table
$.each(regData, function() {
  addTableRow(this);
});

// add row from form to local storage and table
$('#addRow').on('click', function() {
  let formData = {};
  $.each($form.serializeArray(), function() {
    formData[this.name] = this.value;
  });
  regData.push(formData);
  localStorage.setItem('regData', JSON.stringify(regData));
  addTableRow(formData);
  $form[0].reset();
});
#userTable {
  margin: 0 0 2em;
  width: 100%;
  text-align: left;
}

form label,
form label span {
  display: block;
}

#addRow {
  margin: 1em 0 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id="userTable">
  <thead>
    <tr>
      <th>First Name</th>
      <th>Last Name</th>
      <th>Email</th>
      <th>Phone Number</th>
    </tr>
  </thead>
  <tbody>
  </tbody>
</table>

<form id="regForm">
  <label>
    <span>First Name</span>
    <input type="text" name="firstName" value="">
  </label>
  <label>
    <span>Last Name</span>
    <input type="text" name="lastName" value="">
  </label>
  <label>
    <span>Email</span>
    <input type="text" name="email" value="">
  </label>
  <label>
    <span>Phone Number</span>
    <input type="text" name="phone" value="">
  </label>
  <button type="button" id="addRow">Add Row</button>
</form>

Просмотр демонстрации на JSFiddle

Также см. Использование локального хранилища HTML5 в качестве клиентской базы данных .

0 голосов
/ 02 июля 2019
$("#tesdiq").click(function () 
    $(".regForm").hide();
    $(".myTable").show();

    var ad = localStorage.getItem("ad") || $("#ad").val();
    var soyad = localStorage.getItem("soyad") || $("#soyad").val();
    var email = localStorage.getItem("email") || $("#email").val();
    var sheher = localStorage.getItem("sheher") ||  $("#sheher").val();

    var infolar = ("<tr><td>" + ad + "</td>" + "<td>" + soyad + "</td>" + "<td>" + email + "</td>" + "<td>" + sheher + "<td>" + "<input type='checkbox' name='sil'></td></tr>");

    $(".myTable table tbody").append(infolar);


localStorage.setItem("ad", ad);
localStorage.setItem("soyad",soyad);
localStorage.setItem("email",email);
localStorage.setItem("sheher",sheher);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...