JavaScript实现兼容IE6的收起折叠与展开效果实例

发布时间 - 2026-01-11 03:20:21    点击率:

本文实例讲述了JavaScript实现兼容IE6的收起折叠与展开效果。分享给大家供大家参考,具体如下:

收起折叠效果本身不难,但是div是否超出高度不应该利用innerHTML去判断,收起折叠的时候把所有div的innerHTML搞到一个变量又把一个变量的内容通过截取字符串的方式,又将其放到div。下面提供一种通过div本身固有的高度来判断div是否过高,如果过高则提供折叠收起的按钮。

div的高度通过document.getElementById("div的id").offsetHeight去判断,即使这个div的内容是通过后端输出的,document.getElementById("div的id").offsetHeight同样可以取到div的最终高度,比如如下代码:

<!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=utf-8" />
<title>div折叠效果</title>
</head>
<body>
<div id="fold" style="border:1px #000 solid;height:100px;overflow:hidden">
  <?php
    echo "<p>s</p><p>s</p><p>s</p><p>s</p><p>s</p><p>s</p><p>s</p><p>s</p><p>s</p><p>s</p><p>s</p><p>s</p><p>s</p>";
  ?>
</div>
</body>
</html>
<script>
  alert(document.getElementById("fold").offsetHeight);
</script>

运行结果如下:

那么,我就是可以根据div的高度来做文章了。做出如下的效果:

HTML布局如下,用一个id为fold的div将你要收起、展开的内容,夹起来。之后,在这个id为fold的div中放一个宽度为100%的按钮,设置一个id为more_btn的按钮,因为要在脚本处在加载网页就开始判断,id为fold的div的高度,如果id为fold的div的高度过小,这个id为more_btn的按钮就没有显示的必要了。同时,将这个放内容的div与button放在一个div里面。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>div折叠效果</title>
  </head>
  <body>
    <div style="border:1px #000 solid;">
      <div id="fold">
        <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>
      <button id="more_btn" style="width:100%" onclick="showmore(this)">查看更多</button>
    </div>
  </body>
</html>

关键是接下来的网页脚本,具体分两部分,一部分是网页加载部分,用于处理按钮显示否,div折叠否。还有一部分是按钮点击事件showmore。

<script type="text/javascript">
  var div_height=document.getElementById("fold").offsetHeight;
  var fold_flag=0;//用于标志现在的div是展开还是折叠,初始为0,以为折叠中
  if(div_height<100){//根据div的高度是否少于100px,判断是否要隐藏按钮
    document.getElementById("more_btn").style.display="none";
  }
  else{//将div的高度强制定为100px,同时超出部分隐藏
    document.getElementById("fold").style.overflow="hidden";
    document.getElementById("fold").style.height="100px";
  }
  //id为more_btn的按钮的点击事件,按钮被点击的时候,将自己传到这个事件中,形式参数为obj
  function showmore(obj){
    if (fold_flag == 0) {//展开的话,就是让div的高度根据其内容自适应,同时显示所有内容
      document.getElementById("fold").style.overflow = "";
      document.getElementById("fold").style.height = "";
      obj.innerHTML="收起"//按钮的文字改变
      fold_flag=1;//折叠标志为1,意味现在为打开状态
    }
    else{//收起就是回到原来的状态。
      document.getElementById("fold").style.overflow="hidden";
      document.getElementById("fold").style.height="100px";
      obj.innerHTML="查看更多"
      fold_flag=0;
    }
  }
</script>

不想用按钮,你也可以设置一个居中的超级链接。

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript页面元素操作技巧总结》、《JavaScript正则表达式技巧大全》、《JavaScript查找算法技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》、《JavaScript错误与调试技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。


# JavaScript  # 兼容  # IE6  # 收起折叠  # 展开  # JavaScript实现文字展开和收起效果  # vue.js 实现点击展开收起动画效果  # 原生JS仿QQ阅读点击展开、收起效果  # 原生js实现新闻列表展开/收起全文功能  # JavaScript控制网页层收起和展开效果的方法  # 一个封装js代码-----展开收起效果示例  # 自己写了一个展开和收起的多更能型的js效果  # 慢慢展开再慢慢收起的javascript广告效果  # css+js制作不定高度展开收起动画详解  # 过高  # 查看更多  # 加载  # 放在  # 相关内容  # 在这个  # 你要  # 遍历  # 要在  # 感兴趣  # 数据结构  # 给大家  # 来做  # 要了  # 可以根据  # 又将  # 更多关于  # 你也可以  # 又把  # 想用 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在宝塔面板创建新站点?  Laravel如何使用Vite进行前端资源打包?(配置示例)  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  如何确保FTP站点访问权限与数据传输安全?  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册  制作旅游网站html,怎样注册旅游网站?  如何快速搭建高效简练网站?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  phpredis提高消息队列的实时性方法(推荐)  如何彻底删除建站之星生成的Banner?  如何快速查询网址的建站时间与历史轨迹?  Linux系统命令中screen命令详解  英语简历制作免费网站推荐,如何将简历翻译成英文?  个人摄影网站制作流程,摄影爱好者都去什么网站?  如何在Windows服务器上快速搭建网站?  使用C语言编写圣诞表白程序  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  JavaScript如何实现错误处理_try...catch如何捕获异常?  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  如何在IIS中新建站点并解决端口绑定冲突?  如何获取PHP WAP自助建站系统源码?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  利用 Google AI 进行 YouTube 视频 SEO 描述优化  Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】  如何在Windows虚拟主机上快速搭建网站?  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】  如何基于PHP生成高效IDC网络公司建站源码?  JS去除重复并统计数量的实现方法  如何快速辨别茅台真假?关键步骤解析  Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  javascript读取文本节点方法小结  高性价比服务器租赁——企业级配置与24小时运维服务  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  百度输入法ai组件怎么删除 百度输入法ai组件移除工具  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用