JS函数检索本地存储数据并放置在HTML表中

JS Function to retrieve local storage data & place in HTML table

本文关键字:HTML 表中 数据 检索 函数 存储 JS      更新时间:2023-09-26

我正在尝试实现这个 boostrap 数据表:https://datatables.net/examples/api/add_row.html

。但我想在表单而不是预设数据中添加用户提供的数据。我将表单数据存储在本地存储中。

我知道我需要字符串化和解析数据。我添加了一些伪代码,以及一些关于我认为需要做的事情的评论,但我被卡住了。

JSfiddle:http://jsfiddle.net/wad11656/bkoze96c/8/

.HTML:

<table id="example" class="table table-striped table-bordered" cellspacing="0" width="100%">
    <thead>
        <tr>
            <th>Name</th>
            <th>Entry Date</th>
            <th>Feedback</th>
        </tr>
    </thead>
    <tfoot>
        <tr>
            <th>Name</th>
            <th>Entry Date</th>
            <th>Feedback</th>
        </tr>
    </tfoot>
    <tbody>
        <tr>
            <td>Tiger Nixon</td>
            <td>2011/04/25</td>
            <td>Different color scheme</td>
        </tr>
        <tr>
            <td>Garrett Winters</td>
            <td>2011/07/25</td>
            <td>Change the menu</td>
        </tr>
        <tr>
            <td>Bob Parker</td>
            <td>2014/04/23</td>
            <td>Get more sleep--you look awful!</td>
        </tr>
        <tr>
            <td>Wendy-Sue</td>
            <td>2014/04/27</td>
            <td>Call me more often</td>
        </tr>
    </tbody>
</table>
<!-- Form -->
<form method="post" action="">
    <input name="name" id="name" type="text" class="stored" placeholder="Name" autofocus="" required="">
    <br>
    <textarea name="feedback" id="feedback" class="stored" placeholder="Endorsement" rows="3" required=""></textarea>
    <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
    <button type="button" class="btn btn-primary" id="submit_button" onclick="append_feedback();">Submit</button>
</form>

贾夫文:

// Ready Table:
$(document).ready(function () {
    var t = $('#example').DataTable();
    var counter = 1;
});
// Store data in local storage:
$(document).ready(function () {
    function init() {
        if (localStorage["name"]) {
            $('#name').val(localStorage["name"]);
        }
        if (localStorage["feedback"]) {
            $('#feedback').val(localStorage["feedback"]);
        }
    }
    init();
});
$('.stored').keyup(function () {
    localStorage[$(this).attr('name')] = $(this).val();
});
$('#localStorageTest').submit(function () {
    localStorage.clear();
});
//Rough draft of Functions for adding row from localStorage data:
/*
var jsonarray = [];
var name;
var feedback;
var date = new Date();
var day = date.getDate();
var month = date.getMonth() + 1;
var year = date.getFullYear();
var today = month + "/" + day + "/" + year;
var message;
document.getElementById("submit_button").addEventListener("click", submit);
function submit() {
    var t = $('#example').DataTable();
    t.clear();
    // Clear out table with .clear() see api doc
    // Grab JSON array
    // parse JSON array form local storage to jsonArray
    jsonarray = JSON.parse(localStorage.getItem("storage"));
    // for each (var message in jsonArray)
    //look for how to loop through JSON array in js
    endorsements.forEach(var (message)
    t.row.add([
        message[name],
        message[date],
        message[feedback], ]).draw();
    });
}
function localsave() {
    localStorage.Name = document.getElementById("name").value;
    localStorage.Words = document.getElementById("feedback").value;
    // Put name and message into key value pair for JSON
 [{"name":"namethatwasinputeed","date":"1/28/2015","feedback":"messagethatwasinputedfromlocalstorage", },
    {"name":"namethatwasinputeed","date":"1/28/2015","feedback":"messagethatwasinputedfromlocalstorage", },
    {"name":"namethatwasinputeed","date":"1/28/2015","feedback":"messagethatwasinputedfromlocalstorage", }]
    //Stringify to turn into JSON string array
    localStorage["storage"] = JSON.stringify(message);
}
*/

LocalStorage 有自己的 API。如果不使用它,您可能会得到意想不到的结果

基本上,你需要做这样的事情。

if(window.localStorage) { // not all browsers have it
  var output;
  localStorage.setItem('test', 'value');
  output = localStorage.getItem('test');
  console.log(output); // value
}

您还可以查看一个名为Kizzy的库,该库可以很好地进行本地存储。

对于您的问题,您应该尝试将所有内容与所有其他注释代码一起放入 document.ready 中,否则 jQuery 将无法正常工作

// Ready Table:
$(document).ready(function () {
    var t = $('#example').DataTable();
    var counter = 1;
    function init() {
        if (localStorage["name"]) {
            $('#name').val(localStorage["name"]);
        }
        if (localStorage["feedback"]) {
            $('#feedback').val(localStorage["feedback"]);
        }
    }
    init();
    $('.stored').keyup(function () {
       localStorage[$(this).attr('name')] = $(this).val();
    });
    $('#localStorageTest').submit(function () {
        localStorage.clear();
    });
});