JavaScript文本收缩展开 showdetail

本文介绍了一种网页中长文本内容的展示与折叠效果实现方法。通过JavaScript动态调整元素的高度,并使用链接来控制显示完整内容,实现了良好的用户体验。此方法适用于各种需要节省页面空间的场景。

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

原文发布时间为:2009-11-15 —— 来源于本人的百度文章 [由搬家工具导入]

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>

<body>
<div id="divS" style="border:1px solid #f0f0f0;background-color:#ccc;padding:4px;margin:10px">
<p>测试文本</p>
<p>测试了</p>
<p>测试侧试试了</p>
<p>测试文本</p>
<p>测试了</p>
<p>测试侧试试了</p>
<p>测试</p>
<p>测试文本</p>
<p>测试了</p>
<p>测试侧试试了</p>
<p>测试文本</p>
<p>测试了</p>
<p>测试侧试试了</p>
</div>
<p>
<script type="text/javascript"><!--
doShrink(document.getElementById('divS'),60);
function doShrink(oshrink,maxHeight){  
    if(oshrink){  
        var oH = (oshrink.clientHeight||oshrink.offsetHeight);  
        if(oH>maxHeight){  
            var linka = document.createElement("a");  
            var div = document.createElement("div");     
            div.innerHTML = "……<br />"
            text = document.createTextNode("[点击查看更多内容]");
            linka.href = "javascript:void(0)";  
            linka.onclick = function(e) { shrinkShow(this); }  
            linka.appendChild(text);  
            div.appendChild(linka);
            var onext = oshrink.nextSibling;  
            if(onext)  
                oshrink.parentNode.insertBefore(div,onext);  
            else
                oshrink.parentNode.appendChild(div);  
            //过滤较长的内容  
            oshrink.srcHeight = oH;  
            oshrink.style.cssText ="overflow-y: hidden; max-height: "+maxHeight+"px; *_height: "+maxHeight+"px; ";  
        }  
    }  
}

function remove(o){
if(o && o.parentNode)o.parentNode.removeChild(o);
}

/* 第一种,具有展开效果 */
var shrinkInterval = false;  
function shrinkShow(obj) {  
    var omore = obj.parentNode;  
    var ohide = omore.previousSibling;  
    shrinkInterval = window.setInterval(function(){shrinkStep(ohide);},20);
remove(omore); //去除更多链接
}  

function shrinkStep(ohide){  
    var targetHeight = ohide.srcHeight;  
    var nowHeight = (ohide.clientHeight||ohide.offsetHeight);;  
    if(nowHeight < targetHeight){  
        ohide.style.height = nowHeight+20 + 'px';  
        ohide.style.maxHeight = nowHeight+20 + 'px';  
    }else{  
        if(shrinkInterval){  
            window.clearInterval(shrinkInterval);  
            shrinkInterval = false;  
        }  
    }  
}

/* 第二种,没有展开效果 */

/*
function shrinkShow(obj) {  
    var omore = obj.parentNode;  
    var ohide = omore.previousSibling;  
    ohide.style.height = ohide.srcHeight + 'px';  
    ohide.style.maxHeight = ohide.srcHeight + 'px';
remove(omore); //去除更多链接
}
*/

// --></script>
</p>
</body>
</html>

转载于:https://www.cnblogs.com/handboy/p/7158381.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值