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 相关文章推荐
ExtJS 2.2.1的grid控件在ie6中的显示问题
May 04 Javascript
jquery 关于event.target使用的几点说明介绍
Apr 26 Javascript
js控制table合并具体实现
Feb 20 Javascript
jQuery .tmpl() 用法示例介绍
Aug 21 Javascript
使用JavaScript 实现的人脸检测
Mar 24 Javascript
深入理解jQuery事件绑定
Jun 02 Javascript
JS实现的自动打字效果示例
Mar 10 Javascript
vuex state及mapState的基础用法详解
Apr 19 Javascript
Node.js Koa2使用JWT进行鉴权的方法示例
Aug 17 Javascript
JQuery中queue方法用法示例
Jan 31 jQuery
使用JQuery自动完成插件Auto Complete详解
Jun 18 jQuery
vue @ ~ 相对路径 路径别名设置方式
Jun 05 Vue.js
用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 显示客户端IP与服务器IP的代码
2010/10/12 PHP
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
2014/06/23 PHP
PHP的pcntl多进程用法实例
2015/03/19 PHP
CodeIgniter框架常见用法工作总结
2017/03/16 PHP
PHP基于phpqrcode类生成二维码的方法详解
2018/03/14 PHP
PHP实现获取毫秒时间戳的方法【使用microtime()函数】
2019/03/01 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
JavaScript使用cookie实现记住账号密码功能
2015/04/27 Javascript
JS实现网页上随滚动条滚动的层效果代码
2015/11/04 Javascript
jQuery on()绑定动态元素出现的问题小结
2016/02/19 Javascript
微信小程序 触控事件详细介绍
2016/10/17 Javascript
JS新包管理工具yarn和npm的对比与使用入门
2016/12/09 Javascript
Vue.js列表渲染绑定jQuery插件的正确姿势
2017/06/29 jQuery
jQuery制作全屏宽度固定高度轮播图(实例讲解)
2017/07/08 jQuery
浅谈vue2 单页面如何设置网页title
2017/11/08 Javascript
jQuery事件多次绑定与解绑问题实例分析
2019/02/19 jQuery
jQuery实现为table表格动态添加或删除tr功能示例
2019/02/19 jQuery
react项目如何使用iconfont的方法步骤
2019/03/13 Javascript
Vuex的各个模块封装的实现
2020/06/05 Javascript
python中执行shell命令的几个方法小结
2014/09/18 Python
Python实现windows下模拟按键和鼠标点击的方法
2015/03/13 Python
windows下ipython的安装与使用详解
2016/10/20 Python
Python3 中文文件读写方法
2018/01/23 Python
对pyqt5之menu和action的使用详解
2019/06/20 Python
重写django的model下的objects模型管理器方式
2020/05/15 Python
关于Python字符编码与二进制不得不说的一些事
2020/10/04 Python
如何利用Python写个坦克大战
2020/11/18 Python
python实现杨辉三角的几种方法代码实例
2021/03/02 Python
详解移动端HTML5音频与视频问题及解决方案
2018/08/22 HTML / CSS
大学系主任推荐信范文
2013/12/24 职场文书
水利公司纪检监察自我鉴定
2014/02/25 职场文书
八一建军节感言
2014/02/28 职场文书
请假条的格式
2014/04/11 职场文书
考试作弊检讨书范文
2015/01/27 职场文书
电气工程师岗位职责
2015/02/12 职场文书
面试中canvas绘制图片模糊图片问题处理
2022/03/13 Javascript