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 相关文章推荐
在UpdatePanel内jquery easyui效果失效的解决方法
Apr 11 Javascript
location.search在客户端获取Url参数的方法
Jun 08 Javascript
根据json字符串生成Html的一种方式
Jan 09 Javascript
JavaScript中ES6字符串扩展方法
Aug 26 Javascript
JS当前页面登录注册框,固定DIV,底层阴影的实例代码
Sep 29 Javascript
微信小程序之前台循环数据绑定
Aug 18 Javascript
详解Vue用自定义指令完成一个下拉菜单(select组件)
Oct 31 Javascript
mint-ui在vue中的使用示例
Apr 05 Javascript
JavaScript学习笔记之DOM基础操作实例小结
Jan 09 Javascript
js实现倒计时器自定义时间和暂停
Feb 25 Javascript
js实现带有动画的返回顶部
Aug 09 Javascript
elementui实现预览图片组件二次封装
Dec 29 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 危险函数全解析
2009/09/09 PHP
PHP无敌近乎加密方式!
2010/07/17 PHP
php Smarty 字符比较代码
2011/02/27 PHP
PHP的拦截器实例分析
2014/11/03 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
2019/11/24 PHP
javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
2009/02/04 Javascript
Eval and new funciton not the same thing
2012/12/27 Javascript
javascript中的nextSibling使用陷(da)阱(keng)
2014/05/05 Javascript
jQuery学习笔记之toArray()
2014/06/09 Javascript
jQuery旋转木马式幻灯片轮播特效
2015/12/04 Javascript
理解Javascript文件动态加载
2016/01/29 Javascript
浅谈jquery中的each方法$.each、this.each、$.fn.each
2016/06/23 Javascript
解决node.js安装包失败的几种方法
2016/09/02 Javascript
使用snowfall.jquery.js实现爱心满屏飞的效果
2017/01/05 Javascript
AngularJS实现表单验证功能
2017/01/09 Javascript
Vue单页及多页应用全局配置404页面实践记录
2018/05/22 Javascript
vue打包的时候自动将px转成rem的操作方法
2018/06/20 Javascript
jQuery pager.js 插件动态分页功能实例分析
2019/08/02 jQuery
微信小程序自定义组件components(代码详解)
2019/10/21 Javascript
微信小程序页面渲染实现方法
2019/11/06 Javascript
vue 开发之路由配置方法详解
2019/12/02 Javascript
vue微信分享插件使用方法详解
2020/02/18 Javascript
javascript设计模式 ? 状态模式原理与用法实例分析
2020/04/22 Javascript
js实现特别简单的钟表效果
2020/09/14 Javascript
vue 数据双向绑定的实现方法
2021/03/04 Vue.js
[05:29]2014DOTA2国际邀请赛 赛后专访:LGDNewbee顺利过关
2014/07/13 DOTA
在Linux命令行终端中使用python的简单方法(推荐)
2017/01/23 Python
Python实现脚本锁功能(同时只能执行一个脚本)
2017/05/10 Python
matplotlib 输出保存指定尺寸的图片方法
2018/05/24 Python
Python调用.net动态库实现过程解析
2020/06/05 Python
美国单身专业人士在线约会网站:EliteSingles
2019/03/19 全球购物
计算机数据库专业职业生涯规划书
2014/02/08 职场文书
医学专业自荐信
2014/06/14 职场文书
研究生给导师的自荐信
2015/03/06 职场文书
社交电商模式的兴起:这些新的商机千万别错过
2019/07/26 职场文书
python利用while求100内的整数和方式
2021/11/07 Python