Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在localStorage中保存HTMLElement(表)?_Javascript_Html_Arrays - Fatal编程技术网

Javascript 如何在localStorage中保存HTMLElement(表)?

Javascript 如何在localStorage中保存HTMLElement(表)?,javascript,html,arrays,Javascript,Html,Arrays,我已经尝试了一段时间,但在网上找不到任何东西 我有一个项目,其中tablerows被添加到表中。很好 现在我想将该表保存在localStorage中,以便再次加载它。(覆盖现有表) 问题是数组“projects”在保存一次后有2000多个元素。但我只想将整个表保存到第一个(或以后追加)索引中 最后,我希望在选项元素上列出不同的保存: function loadSaveStates(){ alert('loading saved states...'); var pro

我已经尝试了一段时间,但在网上找不到任何东西

我有一个项目,其中tablerows被添加到表中。很好

现在我想将该表保存在localStorage中,以便再次加载它。(覆盖现有表)

问题是数组“projects”在保存一次后有2000多个元素。但我只想将整个表保存到第一个(或以后追加)索引中

最后,我希望在选项元素上列出不同的保存:

    function loadSaveStates(){
     alert('loading saved states...');
     var projects = localStorage.getItem('projects');
     select = document.getElementById('selectSave'); //my Dropdown
     var length = projects.length,
         element = null;
     console.log(length);

     for (var i = 0; i < length; i++) {

        element = projects[i];
        var opt = document.createElement('option');
        opt.value = i;
        opt.innerHTML = 'project ' + i;
        select.appendChild(opt);

    } 
}
函数loadSaveStates(){
警报('正在加载保存的状态…');
var projects=localStorage.getItem('projects');
select=document.getElementById('selectSave');//我的下拉列表
var length=projects.length,
元素=空;
控制台日志(长度);
对于(变量i=0;i

有人能告诉我我做错了什么吗?

你可以通过
jquery
轻松做到这一点,如果有,你对此感兴趣吗。。然后尝试下面的代码

用于设置值

$.jStorage.set("projects", $.trim(projects));
用于获取数据

$.jStorage.get("projects");
用于删除带有密钥的数据

$.jStorage.deleteKey("projects");

我支持使用localStorage,但不使用数组,而是让用户为每个项目指定一个名称,并为每个保存创建一个新项:

    function saveProject(){
   //TODO: Implement Save functionality
            var pname=prompt("Please enter your project name:","projectname")
            var text = $('#mainTable')[0].innerHTML;
            //console.log(text);
            localStorage.setItem(pname, text);
            //console.log(localStorage.key(2));
            loadSaveStates();
        }

function loadProject(){
    var selected = $('#selectSave')[0].selectedIndex
    //console.log(selected);
    if (localStorage.key(selected) == 'jStorage'){
            selected++;
    }
        var innerHTMLTable = localStorage[localStorage.key(selected)];
        //console.log(innerHTMLTable);
        $('#mainTable')[0].innerHTML = innerHTMLTable;

    updateHandlers();
}

function deleteProject(){
    var selected = $('#selectSave')[0].selectedIndex
    var pname = $('#selectSave')[0].options[selected].value

    $('#selectSave')[0].remove(selected);
    localStorage.removeItem(pname);

    //console.log(pname);
    loadSaveStates();
}

问题是我希望能够存储多个项目。这就是我尝试使用数组的原因。因此,首先创建一个项目数组,然后将该数组保存在存储器中。
    function saveProject(){
   //TODO: Implement Save functionality
            var pname=prompt("Please enter your project name:","projectname")
            var text = $('#mainTable')[0].innerHTML;
            //console.log(text);
            localStorage.setItem(pname, text);
            //console.log(localStorage.key(2));
            loadSaveStates();
        }

function loadProject(){
    var selected = $('#selectSave')[0].selectedIndex
    //console.log(selected);
    if (localStorage.key(selected) == 'jStorage'){
            selected++;
    }
        var innerHTMLTable = localStorage[localStorage.key(selected)];
        //console.log(innerHTMLTable);
        $('#mainTable')[0].innerHTML = innerHTMLTable;

    updateHandlers();
}

function deleteProject(){
    var selected = $('#selectSave')[0].selectedIndex
    var pname = $('#selectSave')[0].options[selected].value

    $('#selectSave')[0].remove(selected);
    localStorage.removeItem(pname);

    //console.log(pname);
    loadSaveStates();
}