javascript - 如何打印以筛选存储在本地存储中的所有数组元素

标签 javascript html css local-storage

早上好, 我是 javascript 的新手,我无法从本地存储中获取完整的数组。 我编写了这段代码,但它只在屏幕上打印存储在数组最后一个元素中的数据,而我打算在屏幕上打印数组所有元素的数据。有人可以帮助我吗? 我不会使用 jquery

var preco_final=0; // preço total -> adiciona o preco de todos os bilhetes comprados
function mostrar(){  

    var carrinho=JSON.parse(localStorage.getItem('carrinho-compras'));
    for(i=0;i<carrinho.length;i++)
    {    

        //guarda em variáveis os dados que estão no localstorage
        var tipo_bilhete_carrinho= "tipo de bilhete: " +carrinho[i].tipo_de_bilhete;
        var dias_carrinho="dias: "+carrinho[i].dias;
        var nome_carrinho="nome: "+carrinho[i].nome_t;
        var nadultos_carrinho="númeor de adultos: "+carrinho[i].numero_adultos;
        var ncriancas_carrinho="número de crianças: "+carrinho[i].numero_criancas;
        var preco_carrinho="preço do bilhete: "+carrinho[i].preco_total; // preço do bilhete em causa
        preco_final +=carrinho[i].preco_total; // preço total -> adiciona o preco de todos os bilhetes comprados
       
        // Guarda todas as variáveis num array e converte numa lista pela função map
        var compra=[tipo_bilhete_carrinho,dias_carrinho,nome_carrinho,nadultos_carrinho,ncriancas_carrinho,preco_carrinho];
        ReactDOM.render(React.createElement("ul", {id:"lista_compras"},
            compra.map( (compra) => React.createElement("li", null, compra)),React.createElement("hr",null,"")),document.getElementsByClassName("itens")[0]);
        //hr tag que define mudança temática -> adiciona uma linha  
    }
    document.getElementById('preco_total').innerHTML= "Preço total: "+preco_final;
}

function apagar(){
    localStorage.removeItem('carrinho-compras'); //apaga o carrinho de compras
    document.getElementsByClassName('itens')[0].innerHTML="";// apaga o conteudo da div, de modo a não mostrar nada no ecrã
    document.getElementById('preco_total').innerHTML= ""; // apaga o conteudo da div do preço total
}
body{ margin: 0;}

#lista_compras{
    list-style-type: none;     /* Remove as bolinhas dos elementos da lista */

}
<!DOCTYPE html>
<html lang="pt">
    <head>  
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="css/carrinho_compras.css">
        <link rel="stylesheet" href="css/menu.css">
        <link rel="stylesheet" href="css/cabecalho_rodape.css">
        <script src="js/react.js"></script>
        <script src="js/react-dom.js"></script>
        <link rel="icon" type="images/jpg" href="imagens/logo.jpg"> 
        <title>Adventure Park - Bilheteira</title>
    </head>
    <body onload="mostrar()">
        <header id="cabecalho">    <!-- Cabeçalho / menu-->
            <a href="index.html" id="hyper_to_home">
            <div id="logo_name">
                <img id="logo" src="imagens/logo.png">
                <h3 id="nome_parque">Parque de diversões</h3>
            </div>
            </a>
            <div id="menudiv"></div>
            <picture><a href="carrinho_de_compras.html"><img id="carrinho_de_compras"src="imagens/Bilheteira/carrinho_compras.png" width="40px" height="35px" ></a> </picture>
        </header>

        <div class="itens" id="item"></div>
        <div id="preco_total"></div>
        <div id="btn_carrinho">
            <a href="bilheteira.html"><button>Continuar a comprar</button></a>
            <input type="reset" value="Apagar itens do carrinho" onclick="apagar()">
            
        </div>
        
        <footer id="rodape">      <!-- Rodapé -->
            <div id="data-hora">12/10/2019 23:59:10</div>
        </footer>
        <script src="js/menu.js"></script> <!-- script do menu -->
        <script src="js/carrinho_compras.js"></script>
        <script src="js/data_e_hora.js"></script>
    </body>
</html>       

如何在本地存储中存储数据:

    // Pega a lista já registada, se não houver cria
    var carrinho_de_compras = JSON.parse(localStorage.getItem('carrinho-compras') || '[]');
    // Adiciona reserva
    carrinho_de_compras.push({
     tipo_de_bilhete: tipo_bilhete,
     dias: ndias,
     nome_t:nome,
     numero_adultos: nadultos,
     numero_criancas: ncriancas,
     preco_total: precoTotal
    });
    // Salva a lista alterada
    localStorage.setItem("carrinho-compras", JSON.stringify(carrinho_de_compras));
    alert("Bilhete adicionado ao carrino de compras");

最佳答案

您可以迭代地遍历 localStorage 数组,然后单独打印每个元素,如下所示

for (var i = 0; i < localStorage.length; i++){
    console.log(localStorage.getItem(localStorage.key(i)));
}

关于javascript - 如何打印以筛选存储在本地存储中的所有数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59611332/

相关文章:

javascript - 函数作为 react 子项无效? - 需要帮助将获取的数据提取到表中

html - 如何左对齐 Foundation 中的汉堡包菜单

javascript - 如何在 JavaScript 中将字符串拆分为两个数组项?

html - 这种验证码方法的缺点是什么

javascript - 向下滚动时如何使div从顶部出现?

javascript - 通过JS代码填充自动完成输入

html - Bootstrap 4 - 将品牌置于导航栏中心

html - 使用 Bootstrap 中的 .thumbnail 类修复图像周围的间距?

javascript - JQuery 父 id 选择

javascript - 有没有办法在一个页面上加载多个谷歌翻译小部件