当前位置: 代码迷 >> JavaScript >> 将数据动态保存到localStorage,并在.html加载时将此数据加载到html表中
  详细解决方案

将数据动态保存到localStorage,并在.html加载时将此数据加载到html表中

热度:96   发布时间:2023-06-13 12:49:17.0

我得到了这个项目的学校,当我的.html加载(不仅是从缓存)时,我需要在html表中加载sessionStorage中的数据。

我从另一个.html插入sessionStorage中的新数据,我需要动态保存它(例如我的表的第一行是rfc0,razon_social0,direccion_fiscal0,下一行是rfc1,razon_social1,direccion_fiscal1等等),I使用此Javascript函数来保存我的数据:

function getInfo() {
    if (sessionStorage.contador){
        var i = parseInt(sessionStorage.contador);
    }
    else{
        sessionStorage.setItem('contador', "0");
        var i = parseInt(sessionStorage.contador);
    }

    var rfc = document.getElementById('RFC').value.toUpperCase(); 
    sessionStorage.setItem('rfc' + i, rfc);

    var razon_social = document.getElementById('razon_social').value;
    sessionStorage.setItem('razon_social' + i, razon_social);

    var domicilio_fiscal = document.getElementById('domicilio_fiscal').value;
    sessionStorage.setItem('domicilio_fiscal' + i, domicilio_fiscal);

    var banco = document.getElementById('banco').value;
    sessionStorage.setItem('banco' + i, banco);

    var numero_cuenta = document.getElementById('numero_cuenta').value;
    sessionStorage.setItem('numero_cuenta' + i, numero_cuenta);
    i++;
    sessionStorage.setItem('contador', i);
}

在我的正文onpageshow中,我使用此函数检查存储支持并调用数据:

function checkStorage() {
    if(typeof(Storage) !== "undefined") {
        if(sessionStorage.flag) {
            agregarDatos();
        }
    }
     else {
        alert('Sorry! No Web Storage support...')
    }
}

我的函数agregarDatos()是:

function agregarDatos() {
    var table = document.getElementById("tabla_clientes");
    var i = parseInt(sessionStorage.contador);
    var conta = 0;
    while(conta <= i){ 
        var row = table.insertRow(-1);
        var cell0 = row.insertCell(0)
        var cell1 = row.insertCell(1);
        var cell2 = row.insertCell(2);
        var cell3 = row.insertCell(3);
        var cell4 = row.insertCell(4);
        cell0.innerHTML = '<input class="check" type="checkbox" onClick="validateButton()">';
        cell1.innerHTML = sessionStorage.getItem('rfc' + conta);
        cell2.innerHTML = sessionStorage.getItem('razon_social' + conta);
        cell3.innerHTML = sessionStorage.getItem('domicilio_fiscal' + conta);
        cell4.innerHTML = '<input class="editar" type="button" value="Editar">';
        conta++;
    }
}

当我测试这个时,即使我第一次添加一个元素也没什么,我无法弄清楚是什么问题。

如果我保存没有ID的数据,我只能添加一行,最后存储数据。

PD只有我可以使用Javascript ...

您的代码有几个错误:

  1. 为了填充表,您正在检查未在代码中的任何位置设置的sessionStorage.flag的值。 由于未定义, if条件为false,永远不会调用agregarDatos() 修复 sessionStorage.contador检查(因为它是在下面指定的JSFiddle中完成的)
  2. agregarDatos() ,循环再进行一次迭代,因为当你应该执行conta < i时,你正在执行conta <= i conta < i

这将是代码(带有一些模拟HTML和getInfo调用)。 修改后的行标有注释:

 function getInfo() { if (sessionStorage.contador){ var i = parseInt(sessionStorage.contador); } else { sessionStorage.setItem('contador', "0"); var i = parseInt(sessionStorage.contador); } var rfc = document.getElementById('RFC').value.toUpperCase(); sessionStorage.setItem('rfc' + i, rfc); var razon_social = document.getElementById('razon_social').value; sessionStorage.setItem('razon_social' + i, razon_social); var domicilio_fiscal = document.getElementById('domicilio_fiscal').value; sessionStorage.setItem('domicilio_fiscal' + i, domicilio_fiscal); var banco = document.getElementById('banco').value; sessionStorage.setItem('banco' + i, banco); var numero_cuenta = document.getElementById('numero_cuenta').value; sessionStorage.setItem('numero_cuenta' + i, numero_cuenta); i++; sessionStorage.setItem('contador', i); } function agregarDatos() { var table = document.getElementById("tabla_clientes"); var i = parseInt(sessionStorage.contador); var conta = 0; // Loop from 0 to elems-1 (before it was iterating one extra time) while(conta < i){ var row = table.insertRow(-1); var cell0 = row.insertCell(0) var cell1 = row.insertCell(1); var cell2 = row.insertCell(2); var cell3 = row.insertCell(3); var cell4 = row.insertCell(4); cell0.innerHTML = '<input class="check" type="checkbox" onClick="validateButton()">'; cell1.innerHTML = sessionStorage.getItem('rfc' + conta); cell2.innerHTML = sessionStorage.getItem('razon_social' + conta); cell3.innerHTML = sessionStorage.getItem('domicilio_fiscal' + conta); cell4.innerHTML = '<input class="editar" type="button" value="Editar">'; conta++; } } function checkStorage() { if(typeof(Storage) !== "undefined") { // sessionStorage.flag does not exist, use a value that you know will exist if(sessionStorage.contador) { agregarDatos(); } } else { alert('Sorry! No Web Storage support...') } } window.onload = function() { console.log(1); checkStorage(); } 
 <div> <input type="text" id="RFC" placeholder="RFC" /><br/> <input type="text" id="razon_social" placeholder="Razón Social"/><br/> <input type="text" id="domicilio_fiscal" placeholder="Domicilio Fiscal"/><br/> <input type="text" id="banco" placeholder="Banco"/><br/> <input type="text" id="numero_cuenta" placeholder="Número de Cuenta"/><br/> <input type="button" value="Add to table" onclick="getInfo()"/> </div> <table id="tabla_clientes"></table> 

那个窗口是沙箱,所以你看不到它在这里工作,但你可以在这个 。

  相关解决方案