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直接编辑当前cookie的脚本
Sep 14 Javascript
Wordpress ThickBox 点击图片显示下一张图的修改方法
Dec 11 Javascript
JavaScript打字小游戏代码
Dec 26 Javascript
Node.js中的模块机制学习笔记
Nov 04 Javascript
js实现键盘上下左右键选择文字并显示在文本框的方法
May 07 Javascript
基于JavaScript实现百叶窗动画效果不只单纯flas可以实现
Feb 29 Javascript
bootstrap vue.js实现tab效果
Feb 07 Javascript
js禁止Backspace键使浏览器后退的实现方法
Sep 01 Javascript
使用Vue CLI创建typescript项目的方法
Aug 09 Javascript
vue进入页面时不在顶部,检测滚动返回顶部按钮问题及解决方法
Oct 30 Javascript
Vue-cli3多页面配置详解
Mar 22 Javascript
jQuery实现购物车全功能
Jan 11 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
一个多文件上传的例子(原创)
2006/10/09 PHP
判断PHP数组是否为空的代码
2011/09/08 PHP
php图片加水印原理(超简单的实例代码)
2013/01/18 PHP
php使用curl打开https网站的方法
2015/06/17 PHP
PHP基于文件存储实现缓存的方法
2015/07/20 PHP
JavaScript 变量基础知识
2009/11/07 Javascript
IFrame跨域高度自适应实现代码
2012/08/16 Javascript
jQuery性能优化28条建议你值得借鉴
2013/02/16 Javascript
JS打开层/关闭层/移动层动画效果的实例代码
2013/05/11 Javascript
JS实现为表格动态添加标题的方法
2015/03/31 Javascript
Node.js中使用socket创建私聊和公聊聊天室
2015/11/19 Javascript
Bootstrap的Refresh Icon也spin起来
2016/07/13 Javascript
AngularJS中关于ng-class指令的几种实现方式详解
2016/09/17 Javascript
BootStrap 超链接变按钮的实现方法
2016/09/25 Javascript
详解使用Typescript开发node.js项目(简单的环境配置)
2017/10/09 Javascript
利用Console来Debug的10个高级技巧汇总
2018/03/26 Javascript
详解VUE项目中安装和使用vant组件
2019/04/28 Javascript
Vue+Koa2 打包后进行线上部署的教程详解
2019/07/31 Javascript
layui switch 开关监听 弹出确定状态转换的例子
2019/09/21 Javascript
如何在node环境实现“get数据解析”代码实例
2020/07/03 Javascript
基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件功能
2021/02/23 Vue.js
[01:52]PWL S2开团时刻第四期——DOTA2成语故事
2020/12/03 DOTA
python实现每次处理一个字符的三种方法
2014/10/09 Python
在Python中使用Mako模版库的简单教程
2015/04/08 Python
Python的Flask框架中实现登录用户的个人资料和头像的教程
2015/04/20 Python
浅谈python中的数字类型与处理工具
2017/08/02 Python
Python实现的人工神经网络算法示例【基于反向传播算法】
2017/11/11 Python
完美解决Pycharm无法导入包的问题 Unresolved reference
2018/05/18 Python
Python xlwt模块使用代码实例
2020/06/10 Python
python 常见的排序算法实现汇总
2020/08/21 Python
浅析HTML5中的 History 模式
2017/06/22 HTML / CSS
公司离职证明范本(汇总)
2014/09/10 职场文书
城管个人总结
2015/02/28 职场文书
教师党员自我评价2015
2015/03/04 职场文书
Nginx+SpringBoot实现负载均衡的示例
2021/03/31 Servers
Pytorch 中net.train 和 net.eval的使用说明
2021/05/22 Python