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 相关文章推荐
JScript中使用ADODB.Stream判断文件编码的代码
Jun 09 Javascript
Javascript事件实例详解
Nov 06 Javascript
js生成动态表格并为每个单元格添加单击事件的方法
Apr 14 Javascript
jQuery实现下拉框选择图片功能实例
Aug 08 Javascript
如何用jQuery实现ASP.NET GridView折叠伸展效果
Sep 26 Javascript
JS弹出对话框实现方法(三种方式)
Dec 18 Javascript
Ionic快速安装教程
Jun 03 Javascript
Vue Cli 3项目使用融云IM实现聊天功能的方法
Apr 19 Javascript
vue项目中在外部js文件中直接调用vue实例的方法比如说this
Apr 28 Javascript
微信小程序canvas分享海报功能
Oct 31 Javascript
javascript 对象 与 prototype 原型用法实例分析
Nov 11 Javascript
浅谈Vue static 静态资源路径 和 style问题
Nov 07 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表单转换textarea换行符的方法
2010/09/10 PHP
PHP实现根据浏览器跳转不同语言页面代码
2013/08/02 PHP
浅析iis7.5安装配置php环境
2015/05/10 PHP
简单的php+mysql聊天室实现方法(附源码)
2016/01/05 PHP
php+mongodb判断坐标是否在指定多边形区域内的实例
2016/10/28 PHP
php中str_pad()函数用法分析
2017/03/28 PHP
phpStudy2016 配置多个域名期间遇到的问题小结
2017/10/19 PHP
解决PhpStorm64不能启动的问题
2020/06/20 PHP
js电信网通双线自动选择技巧
2008/11/18 Javascript
extjs 3.31 TreeGrid实现静态页面加载json到TreeGrid里面
2013/04/02 Javascript
jquery 删除cookie失效的解决方法
2013/11/12 Javascript
jquery实现鼠标拖动图片效果示例代码
2014/01/09 Javascript
JS实现的生成随机数的4个函数分享
2015/02/11 Javascript
在JavaScript中操作数组之map()方法的使用
2015/06/09 Javascript
js判断checkbox是否选中个数的方法(超简单)
2016/08/19 Javascript
微信小程序  简单实例(阅读器)的实例开发
2016/09/29 Javascript
JavaScript版经典游戏之扫雷游戏完整示例【附demo源码下载】
2016/12/12 Javascript
基于百度地图api清除指定覆盖物(Overlay)的方法
2018/01/26 Javascript
vue.extend实现alert模态框弹窗组件
2018/04/28 Javascript
微信小程序实现笑脸评分功能
2018/11/03 Javascript
layui的表单验证支持ajax判断用户名是否重复的实例
2019/09/06 Javascript
浅谈vue异步数据影响页面渲染
2019/10/29 Javascript
javascript canvas实现简易时钟例子
2020/09/05 Javascript
vue3.0 的 Composition API 的使用示例
2020/10/26 Javascript
Python中实现结构相似的函数调用方法
2015/03/10 Python
python实现求解列表中元素的排列和组合问题
2018/03/15 Python
详解python编译器和解释器的区别
2019/06/24 Python
廉洁家庭事迹材料
2014/05/15 职场文书
上班迟到检讨书
2014/09/15 职场文书
店面出租协议书范本
2014/11/28 职场文书
2014年教务处工作总结
2014/12/03 职场文书
2015年煤矿工作总结
2015/04/28 职场文书
情侣餐厅的创业计划书范本!
2019/07/26 职场文书
Spring实现内置监听器
2021/07/09 Java/Android
SQL语句中JOIN的用法场景分析
2021/07/25 SQL Server
springboot 启动如何排除某些bean的注入
2021/08/02 Java/Android