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


Posted in Javascript onSeptember 20, 2017

本文实例讲述了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>

运行结果如下:

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

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

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

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 相关文章推荐
js 兼容多浏览器的回车和鼠标焦点事件代码(IE6/7/8,firefox,chrome)
Apr 14 Javascript
JS延迟加载(setTimeout) JS最后加载
Jul 15 Javascript
jQuery数据显示插件整合实现代码
Oct 24 Javascript
JS复制到剪贴板示例代码
Oct 30 Javascript
JS删除字符串中重复字符方法
Mar 09 Javascript
jQuery实现的网页左侧在线客服效果代码
Oct 23 Javascript
JS实现的颜色实时渐变效果完整实例
Mar 25 Javascript
IntersectionObserver API 详解篇
Dec 11 Javascript
jQuery EasyUI Accordion可伸缩面板组件使用详解
Feb 28 Javascript
vue 2.8.2版本配置刚进入时候的默认页面方法
Sep 21 Javascript
基于JavaScript实现每日签到打卡轨迹功能
Nov 29 Javascript
小程序云开发如何实现图片上传及发表文字
May 17 Javascript
用vue构建多页面应用的示例代码
Sep 20 #Javascript
微信小程序request请求后台接口php的实例详解
Sep 20 #Javascript
微信小程序 input表单与redio及下拉列表的使用实例
Sep 20 #Javascript
JavaScript实现图片本地预览功能【不用上传至服务器】
Sep 20 #Javascript
微信小程序picker组件下拉框选择input输入框的实例
Sep 20 #Javascript
jQueryMobile之窗体长内容的缺陷与解决方法实例分析
Sep 20 #jQuery
微信小程序授权获取用户详细信息openid的实例详解
Sep 20 #Javascript
You might like
PHP删除特定数组内容并且重建数组索引的方法.
2011/03/25 PHP
PHP 读取Postgresql中的数组
2013/04/14 PHP
PHP实现自动识别Restful API的返回内容类型
2015/02/07 PHP
PHP实现伪静态方法汇总
2016/01/13 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
2017/06/09 PHP
“不能执行已释放的Script代码”错误的原因及解决办法
2007/09/09 Javascript
用js实现的页面关键字密度查询代码
2007/12/27 Javascript
如何确保JavaScript的执行顺序 之jQuery.html深度分析
2011/03/03 Javascript
js中AppendChild与insertBefore的用法详细解析
2013/12/16 Javascript
用jquery修复在iframe下的页面锚点失效问题
2014/08/22 Javascript
Javascript Memoizer浅析
2014/10/16 Javascript
node.js中的fs.linkSync方法使用说明
2014/12/15 Javascript
jquery实现键盘左右翻页特效
2015/04/30 Javascript
JavaScript递归操作实例浅析
2016/10/31 Javascript
概述javascript在Google IE中的调试技巧
2016/11/24 Javascript
js判断节假日实例代码
2017/12/27 Javascript
Vue.js自定义事件的表单输入组件方法
2018/03/08 Javascript
JS实现动态生成html table表格的方法分析
2018/07/11 Javascript
图解javascript作用域链
2019/05/27 Javascript
vue实现多条件和模糊搜索功能
2019/05/28 Javascript
swiper自定义分页器的样式
2020/09/14 Javascript
Python入门篇之列表和元组
2014/10/17 Python
Python使用ftplib实现简易FTP客户端的方法
2015/06/03 Python
Keras 实现加载预训练模型并冻结网络的层
2020/06/15 Python
Python 如何反方向迭代一个序列
2020/07/28 Python
pycharm 如何取消连按两下shift出现的全局搜索
2021/01/15 Python
在数据文件自动增长时,自动增长是否会阻塞对文件的更新
2014/05/01 面试题
物流仓储实习自我鉴定
2013/09/25 职场文书
供货协议书范本
2014/04/22 职场文书
警示教育片观后感
2015/06/17 职场文书
关于职业道德的心得体会
2016/01/18 职场文书
2019年入党思想汇报格式与要求
2019/06/25 职场文书
一文搞懂MySQL索引页结构
2022/02/28 MySQL
mysql查询结果实现多列拼接查询
2022/04/03 MySQL
vue封装数字翻牌器
2022/04/20 Vue.js
Win11无法安装更新补丁KB3045316怎么办 附KB3045316补丁修复教程
2022/08/14 数码科技