localStorage的使用案例

该代码示例展示了如何使用HTML5的WebStorageAPI进行数据的保存、查找和删除操作。用户可以输入网站名和网址,点击‘新增记录’按钮存储数据,通过输入网站名查找数据,查找结果会显示在页面上。此外,还有一个功能用于删除特定的存储记录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

做一个这样的效果:

 

 

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>HTML5本地存储之Web Storage篇</title>
</head>

<body>
    <div style="border: 2px dashed #ccc;width:320px;text-align:center;">
        <label for="sitename">网站名(key):</label>
        <input type="text" id="sitename" name="sitename" class="text" />
        <br />
        <label for="siteurl">网 址(value):</label>
        <input type="text" id="siteurl" name="siteurl" />
        <br />
        <input type="button" onclick="save()" value="新增记录" />
        <hr />
        <label for="search_phone">输入网站名:</label>
        <input type="text" id="search_site" name="search_site" />
        <input type="button" onclick="find()" value="查找网站" />
        <p id="find_result"></p>
    </div>
    <br />
    <div id="list">
    </div>

    <script>
        // 载入所有存储在localStorage的数据
        loadAll();


        //保存数据  
        function save() {
            let name = sitename.value;
            let url = siteurl.value;
            localStorage[name] = url
            loadAll()
        }
        //查找数据  
        function find() {
            let find = search_site.value
            find_result.innerHTML = localStorage[find]
        }
        //将所有存储在localStorage中的对象提取出来,并展现到界面上
        function loadAll() {
            let a = '';

            for (let i = 0; i < localStorage.length; i++) {
                let sitename = localStorage.key(i)
                let sitevalue = localStorage[sitename]
                a += `<tr><td>${sitename}</td>
                    <td>${sitevalue}</td>
                    <td><button onclick="del('${sitename}')">删除</button></tr>`
                console.log(sitename);

            }
            console.log(localStorage);
            list.innerHTML = `<table  border=1>${a}</table>`
            if (localStorage.length === 0) {
                list.innerHTML = '数据为空'
            }
        }
        function del(name) {
            localStorage.removeItem(name)
            loadAll()
        }

    </script>
</body>

</html>

<think>好的,我需要帮助用户了解鸿蒙系统中LocalStorage使用方法,并提供示例。首先,我需要整理用户提供的引用资料,并确保回答符合系统级指令的要求,比如正确使用LaTeX格式和中文回答,生成相关问题,以及引用标注。 首先,根据引用[3],LocalStorage是ArkTS提供的页面级状态变量存储,类似于内存数据库。可以创建多个实例,并在页面内或跨页面共享。组件树的根节点(@Entry装饰的组件)可以分配LocalStorage实例,子组件自动获得访问权限。未被@Entry装饰的组件不能独立分配,只能继承父组件的实例。 接下来,引用[1]提到可以直接使用全局LocalStorage实例存储和获取数据。而引用[2]和[4]指出,除了逻辑层的使用,还可以用装饰器@LocalStorageProp和@LocalStorageLink在UI组件中同步状态变量。需要分别在逻辑层和UI层的使用方法,并给出示例。 我需要分步骤说明使用方法: 1. 全局实例的使用:存储和获取数据,引用[1]和[4]中的逻辑存取方法。 2. 装饰器在UI中的使用:@LocalStorageProp和@LocalStorageLink的区别,引用[2]和[3]。 3. 跨页面共享:通过GetShared接口,引用[3]。 4. 示例代码:逻辑层存储数据,UI层使用装饰器绑定数据,可能需要结合引用中的代码片段。 确保LaTeX格式正确,如变量用$...$,独立公式用$$...$$,但问题可能不涉及数学公式,所以可能不需要。然后生成相关问题,如如何跨页面共享、装饰器区别、与AppStorage的对比等。 最后,检查引用标注是否自然,每个引用在相关段落末尾添加[^数字]。确保回答结构清晰,符合用户要求。</think>### 鸿蒙系统 LocalStorage 使用方法详解 #### 1. **LocalStorage 基础概念** LocalStorage 是 ArkTS 提供的页面级别状态变量存储机制,类似于内存内的“数据库”[^3]。它支持在组件树中共享数据,并可通过特定接口实现跨页面或 UIAbility 实例的共享。 #### 2. **全局实例的存储与获取** 可直接使用全局的 LocalStorage 实例进行数据存取: ```typescript // 存储数据 LocalStorage.GetShared().setOrCreate('key', 'value'); // 创建或更新键值对[^1] // 获取数据 let value = LocalStorage.GetShared().get('key'); // 读取键对应的值[^4] ``` #### 3. **UI 组件与数据绑定** 通过装饰器实现 UI 组件与 LocalStorage 的自动同步: - **@LocalStorageProp**:单向绑定,UI 组件接收数据但不反向更新 LocalStorage。 - **@LocalStorageLink**:双向绑定,组件修改数据会同步到 LocalStorage[^2]。 ```typescript @Entry(LocalStorage.GetShared()) // 根组件绑定实例 @Component struct MyComponent { @LocalStorageProp('key') readOnlyData: string = ''; // 单向绑定 @LocalStorageLink('key') writableData: string = ''; // 双向绑定 build() { Column() { Text(this.readOnlyData) // 仅显示数据 TextInput({ text: this.writableData }) // 输入内容会同步到 LocalStorage } } } ``` #### 4. **跨页面共享数据** 通过 `GetShared` 接口获取同一实例,实现跨页面数据共享: ```typescript // 在 PageA 中存储 LocalStorage.GetShared().set('theme', 'dark'); // 在 PageB 中读取 let theme = LocalStorage.GetShared().get('theme'); // 结果为 'dark' ``` #### 5. **组件树中的数据传递规则** - 只有被 `@Entry` 装饰的根组件可被独立分配 LocalStorage 实例。 - 子组件自动继承父组件的实例,且一个实例可被多个组件共享。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值