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 相关文章推荐
JavaScript 页面坐标相关知识整理
Jan 09 Javascript
jquery中:input和input的区别分析
Jul 13 Javascript
jquery Validation表单验证使用详解
Sep 12 Javascript
浅谈javascript语法和定时函数
May 03 Javascript
深入理解JavaScript函数参数(推荐)
Jul 26 Javascript
React全家桶环境搭建过程详解
May 18 Javascript
基于mpvue的小程序项目搭建的步骤
May 22 Javascript
详解Vue组件之作用域插槽
Nov 22 Javascript
JS回调函数原理与用法详解【附PHP回调函数】
Jul 20 Javascript
5分钟快速看懂ES6中的反射与代理
Dec 19 Javascript
记一次react前端项目打包优化的方法
Mar 30 Javascript
jQuery treeview树形结构应用
Mar 24 jQuery
用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抽象工厂模式(Elgg)
2010/03/21 PHP
深入理解PHP之数组(遍历顺序)  Laruence原创
2012/06/13 PHP
PHP中$_SERVER的详细参数与说明介绍
2013/10/26 PHP
PHP实现通过CURL上传文件功能示例
2018/05/30 PHP
JavaScript 获取事件对象的注意点
2009/07/29 Javascript
12个非常有创意的JavaScript小游戏
2010/03/18 Javascript
Javascript Function对象扩展之延时执行函数
2010/07/06 Javascript
父子窗体间传递JSON格式的数据的代码
2010/12/25 Javascript
JS获取后台Cookies值的小例子
2013/03/04 Javascript
jquery map方法使用示例
2014/04/23 Javascript
node.js中的fs.stat方法使用说明
2014/12/16 Javascript
利用iscroll4实现轮播图效果实例代码
2017/01/11 Javascript
基于JavaScript实现屏幕滚动效果
2017/01/18 Javascript
Bootstrap如何激活导航状态
2017/03/22 Javascript
jquery基于layui实现二级联动下拉选择(省份城市选择)
2017/06/20 jQuery
详解webpack 如何集成第三方js库
2017/06/29 Javascript
vuejs实现本地数据的筛选分页功能思路详解
2017/11/15 Javascript
搭建element-ui的Vue前端工程操作实例
2018/02/23 Javascript
解决vue-cli webpack打包后加载资源的路径问题
2018/09/25 Javascript
jQuery实现飞机大战小游戏
2020/07/05 jQuery
Python和perl实现批量对目录下电子书文件重命名的代码分享
2014/11/21 Python
Python编写百度贴吧的简单爬虫
2015/04/02 Python
python实现二叉查找树实例代码
2018/02/08 Python
python迭代dict的key和value的方法
2018/07/06 Python
python学生信息管理系统(完整版)
2020/04/05 Python
Python requests模块实例用法
2019/02/11 Python
Python求两个字符串最长公共子序列代码实例
2020/03/05 Python
浅谈python处理json和redis hash的坑
2020/07/16 Python
Omio葡萄牙:全欧洲低价大巴、火车和航班搜索和比价
2019/02/09 全球购物
电脑教师的教学自我评价
2013/11/26 职场文书
店长职务说明书
2014/02/04 职场文书
办公设备采购方案
2014/03/16 职场文书
社区戒毒工作方案
2014/06/04 职场文书
员工培训协议书
2014/09/15 职场文书
Python网络编程之ZeroMQ知识总结
2021/04/25 Python
Python find()、rfind()方法及作用
2022/12/24 Python