html文章字段的隐藏和显示

本文通过HTML和JavaScript实现了一种交互式的文本展示方式,可以让读者点击“详情”按钮查看完整版的《木兰诗》,再次点击“收起”按钮则隐藏详细内容并返回初始状态。
<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8" />
        <title></title>
        <script type="text/javascript">
            function play(){
                alert("aaa");
                var aa = document.getElementById("top2");
                alert("bbb");
                aa.style.display="block";
                document.getElementById("top1").innerHTML="唧唧复唧唧,木兰当户织。不闻机杼声,唯闻";
            }
            function end(){
                var aa = document.getElementById("top2");
                aa.style.display="none";
                document.getElementById("top1").innerHTML="唧唧复唧唧,木兰当户织。不闻机杼声,唯闻....<a href='#' style='color: red;' onclick='play()'>[详情]</a>";
            }
        </script>
    </head>

    <body>
        <div id="top1">
            唧唧复唧唧,木兰当户织。不闻机杼声,唯闻......
            <a href="#" onclick="play()" style="color: red;" id="aa">[详情]</a>
        </div>
        <div style="display: none;" id="top2">唧唧复唧唧,木兰当户织。不闻机杼声,唯闻女叹息。 问女何所思,问女何所忆。女亦无所思,女亦无所忆。昨夜见军
            帖,可汗大点兵,军书十二卷,卷卷有爷名。阿爷无大儿,木兰无长兄,愿为市鞍马,从此替爷征。 东市买骏马,西市买鞍鞯,南市买
            辔头,北市买长鞭。旦辞爷娘去,暮宿黄河边,不闻爷娘唤女声,但闻黄河流水鸣溅溅。旦辞黄河去,暮至黑山头,不闻爷娘唤女声,
            但闻燕山胡骑鸣啾啾。 万里赴戎机,关山度若飞。朔气传金柝,寒光照铁衣。将军百战死,壮士十年归。 归来见天子,天子坐明堂。策
            勋十二转,赏赐百千强。可汗问所欲,木兰不用尚书郎,愿驰千里足,送儿还故乡。<a href="#" onclick="end()" style="color: red;">[收起]</a>
        </div>
    </body>

</html>
<think>好的,用户想在HTML中实现点击收藏并在收藏界面显示的功能。我需要先理清用户的需求。用户可能是在开发一个网站或者小程序,需要让用户能够收藏文章或其他内容,然后在另一个页面展示已收藏的内容。根据用户提供的引用,他们之前尝试过其他方法但遇到了问题,比如云函数的使用、复杂度或bug。首先,我得考虑如何用HTMLJavaScript可能的本地存储来实现这个功能,因为用户提到不想用云函数,所以应该避免后端或数据库的使用。本地存储(localStorage)是一个可行的方案,它可以在浏览器端保存数据,不需要服务器支持。接下来,点击收藏的功能需要绑定一个事件处理函数,当用户点击收藏按钮时,将当前页面的信息(比如标题URL)保存到localStorage中。然后,在收藏页面,需要读取localStorage中的数据并动态生成列表显示出来。需要注意的步骤包括:如何设计收藏按钮的HTML结构,如何用JavaScript监听点击事件,如何存储读取数据,以及如何防止重复收藏。此外,还要考虑数据的持久化,即使用户关闭浏览器后,收藏的内容仍然存在。 可能的问题点:跨页面的数据同步,如果用户在一个页面收藏后,如何实时更新收藏页面的显示。不过,由于使用的是localStorage,当用户跳转到收藏页面时,需要重新读取数据,所以可能需要每次进入收藏页面时都从localStorage加载最新数据。 另外,用户提到的引用中有使用到HTMLJS的例子,比如第三个引用中的欢迎语隐藏功能,这涉及到DOM操作定时器,但收藏功能需要的是数据存储检索,所以重点在localStorage的使用。需要确保代码的兼容性,localStorage在现代浏览器中支持良好,但需要考虑用户是否禁用的情况,不过用户可能暂时不需要处理这种异常。最后,生成相关问题时,要考虑用户可能想了解的进阶内容,比如如何删除收藏、如何添加分类,或者如何优化存储结构等。</think>### HTML实现点击收藏并显示功能的方法 #### 一、基础实现步骤 1. **收藏按钮事件绑定** ```html <button onclick="collectItem('文章ID', '文章标题')">收藏</button> ``` 使用`onclick`事件触发收藏操作,传递参数如$itemId$$title$[^3]。 2. **JavaScript存储逻辑** ```javascript function collectItem(id, title) { let items = JSON.parse(localStorage.getItem('collectedItems') || '[]'); if (!items.some(item => item.id === id)) { items.push({id, title, time: new Date().toLocaleString()}); localStorage.setItem('collectedItems', JSON.stringify(items)); } } ``` 通过`localStorage`存储数据,使用`JSON`序列化避免重复收藏[^1]。 3. **收藏页面数据展示** ```html <div id="collectionList"></div> <script> function loadCollections() { const items = JSON.parse(localStorage.getItem('collectedItems') || '[]'); const html = items.map(item => `<div>${item.title} (收藏时间: ${item.time})</div>` ).join(''); document.getElementById('collectionList').innerHTML = html; } window.onload = loadCollections; </script> ``` 动态生成DOM元素展示收藏内容[^3]。 #### 二、进阶优化方案 1. **添加删除功能** ```javascript function deleteItem(id) { let items = JSON.parse(localStorage.getItem('collectedItems')); items = items.filter(item => item.id !== id); localStorage.setItem('collectedItems', JSON.stringify(items)); loadCollections(); // 重新加载列表 } ``` 在展示时添加删除按钮并绑定事件。 2. **数据类型扩展** ```javascript { id: "001", title: "Python教程", type: "文章", // 新增分类字段 cover: "image.jpg" // 缩略图路径 } ``` 支持更复杂的数据结构[^2]。 3. **容量控制** ```javascript if (items.length > 100) { items.shift(); // 删除最早收藏 } ``` 防止`localStorage`超过5MB限制。 #### 三、完整示例代码 ```html <!-- 文章页 --> <article> <h2>快速排序算法详解</h2> <button onclick="collectItem('003', '快速排序算法详解')">收藏本文</button> </article> <script> function collectItem(id, title) { let items = JSON.parse(localStorage.getItem('collectedItems') || '[]'); if (!items.find(item => item.id === id)) { items.push({ id: id, title: title, time: new Date().toLocaleString(), url: location.href }); localStorage.setItem('collectedItems', JSON.stringify(items)); alert('收藏成功!'); } } </script> <!-- 收藏页 --> <div id="collectionList"></div> <script> function loadCollections() { const items = JSON.parse(localStorage.getItem('collectedItems') || '[]'); const html = items.map(item => ` <div class="collection-item"> <a href="${item.url}">${item.title}</a> <span>${item.time}</span> <button onclick="deleteItem('${item.id}')">删除</button> </div> `).join(''); document.getElementById('collectionList').innerHTML = html; } function deleteItem(id) { let items = JSON.parse(localStorage.getItem('collectedItems')); items = items.filter(item => item.id !== id); localStorage.setItem('collectedItems', JSON.stringify(items)); loadCollections(); } </script> ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值