原生JS实现点击展开与收起全文功能
本文介绍如何使用原生JavaScript实现类似QQ阅读的点击展开与收起全文效果。通过定义showdiv和hidediv两个函数,利用DOM节点查找与样式控制,实现内容的动态显示与隐藏。代码包含HTML结构、CSS样式及JS逻辑,注重浏览器兼容性判断,适合前端开发者参考学习。
展开与收起功能实现
利用JavaScript技术实现类似QQ阅读的点击展开与收起效果,具体实现细节如下。
第一步,定义展开函数showdiv(),用于点击“全文”按钮时展开完整内容。
1. 展开函数接收触发点击事件的按钮作为参数。 2. 通过该按钮查找其父元素,并将父元素设置为隐藏状态。 3. 将紧邻父元素之后的内容元素设置为显示状态。
第二步,定义收起函数hidediv(),用于点击“收起全文”按钮时隐藏完整内容。
1. 收起函数同样接收触发点击事件的按钮作为参数。 2. 通过该按钮查找其父元素,并将父元素设置为隐藏状态。 3. 将紧邻父元素之前的内容元素设置为显示状态。
注意:为确保浏览器兼容性,必须判断获取到的节点nodeType是否为元素节点。
最终效果如图所示:

具体实现代码如下:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style type="text/css">
body
{
margin: 0 auto;
padding: 0;
font-size: 9pt;
line-height: 180%;
}
#pn
{
background: #f8f8f8;
height: auto;
width: 750px;
margin: 0 auto;
padding: 5px;
}
.artTitle
{
font-weight: bold;
color: #3030FF;
font-size: 11pt;
}
.subTitle
{
color: #CCC;
}
.content
{
border: 1px solid #CCC;
display: none;
padding: 5px;
}
.btm
{
text-align: right;
height: 30px;
}
.btn
{
width: 80px;
height: 20px;
padding: 5px 3px 5px 3px;
text-align: center;
text-decoration: none;
background: #f0f0f0;
border: 1px solid #CCC;
}
</style>
<script type="text/javascript">
// 显示函数
function showdiv(obj) {
var x=obj.parentNode;
var y=x.nextSibling;
while(y.nodeType!=1){
y=y.nextSibling;
}
x.style.display="none";
y.style.display="block";
}
// 隐藏函数
function hidediv(obj) {
var x=obj.parentNode.parentNode;
var y=x.previousSibling;
while(y.nodeType!=1){
y=y.previousSibling;
}
x.style.display="none";
y.style.display="block";
}
</script>
</head>
<body>
<div id="pn">
<div id="art0">
<p class="artTitle">
Slack:团队日常沟通协作工具典范
</p>
<p class="subTitle">
作者:来自网络 发表时间:2014-3-1
</p>
<p>
现在可以在Slack.com上申请成为试用用户,这是一个面对企业、团队的协作工具,似乎需要试用企业域名后缀的邮箱。 Slack从目前看,基本符合我对团队沟通工具的完全要求。特点如下:
在所有端都可以进行,即桌面端,包括Mac OS和Windows系统;web端即浏览器;移动端的支持包括iOS和Android。 同时,移动端是有良好体验以满足移动办公便利性的。
聚焦核心行为,即"发布一条信息",团队成员只需要做一个这个基本行为即可。 发布一条... <a href="#" onclick="javascript:showdiv(this);" >展开全文</a></p>
<div class="content">
<p>现在可以在Slack.com上申请成为试用用户,这是一个面对企业、团队的协作工具,似乎需要试用企业域名后缀的邮箱。 Slack从目前看,基本符合我对团队沟通工具的完全要求。特点如下:</p>
<p>聚焦核心行为,即“发布一条信息”,团队成员只需要做一个这个基本行为即可。</p>
<p>发布一条信息这个行为可以扩展成为该信息是一个图片或者一个文件等,以便协作更好进行,如果文件能快速预览则更好。</p>
<p>支持@方式直接和单个团队成员沟通,并且能够被其他成员看到和参与进来。</p>
<p>以#来进行快速形成话题组或者项目组。</p>
<p>良好的搜索支持。 上述虽然是Slack的特性,也是我对团队日常协作工具的要求——显然,Slack完全符合这些要求,而且产品做得很易用。这些要求其实就是我对“移动、社交、云端存储”的理解,这三个因素基本会重写很多软件和应用。</p>
<p>Slack有免费的lite版本,但收费版本似乎价格对中文用户而言略高。</p>
<p>Slack由我很喜欢的项目Flickr的创始人新公司TinySpeck创办,因此基础甚好。而且从目前看,基本上会成为一个很成功的应用,所以在产品持续发展上面应该毫无问题。</p>
<p>The post Slack:团队日常沟通协作工具典范 appeared first on 游山打猎.</p>
<div class="btm">
<a href="#" class="btn" onclick="javascript:hidediv(this);">收起全文</a>
</div>
</div>
</div>
<hr />
<div id="art1">
<p class="artTitle">
Slack:团队日常沟通协作工具典范
</p>
<p class="subTitle">
作者:来自网络 发表时间:2014-3-1
</p>
<p>现在可以在Slack.com上申请成为试用用户,这是一个面对企业、团队的协作工具,似乎需要试用企业域名后缀的邮箱。 Slack从目前看,基本符合我对团队沟通工具的完全要求。特点如下:
在所有端都可以进行,即桌面端,包括Mac OS和Windows系统;web端即浏览器;移动端的支持包括iOS和Android。 同时,移动端是有良好体验以满足移动办公便利性的。
聚焦核心行为,即"发布一条信息",团队成员只需要做一个这个基本行为即可。 发布一条... <a href="#" onclick="javascript:showdiv(this);">展开全文</a></p>
<div class="content">
<p>现在可以在Slack.com上申请成为试用用户,这是一个面对企业、团队的协作工具,似乎需要试用企业域名后缀的邮箱。 Slack从目前看,基本符合我对团队沟通工具的完全要求。特点如下:</p>
<p>在所有端都可以进行,即桌面端,包括Mac OS和Windows系统;web端即浏览器;移动端的支持包括iOS和Android。</p>
<p>同时,移动端是有良好体验以满足移动办公便利性的。</p>
<p>聚焦核心行为,即“发布一条信息”,团队成员只需要做一个这个基本行为即可。</p>
<p>发布一条信息这个行为可以扩展成为该信息是一个图片或者一个文件等,以便协作更好进行,如果文件能快速预览则更好。</p>
<p>支持@方式直接和单个团队成员沟通,并且能够被其他成员看到和参与进来。</p>
<p>The post Slack:团队日常沟通协作工具典范 appeared first on 游山打猎.</p>
<div class="btm">
<a href="#" class="btn" onclick='hidediv(this)'>收起全文</a>
</div>
</div>
</div>
</div>
</body>
</html>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
JavaScript闭包与类(Class)的区别及适用场景对比
2026-11-05 15:48:57
JavaScript入门要学ES6吗?let与箭头函数等新特性解析
2026-11-05 14:49:16
JavaScript 8种数据类型详解:基本类型与引用类型的区别
2026-11-05 14:25:15
怎么在JavaScript中使用async/await优化Ajax异步流程
2026-11-05 13:56:15
JavaScript replace回调函数实现动态正则替换逻辑
2026-11-05 13:52:13
