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 null和undefined区别分析
Oct 14 Javascript
基于JavaScript 数据类型之Boolean类型分析介绍
Apr 19 Javascript
使用jQuery插件创建常规模态窗口登陆效果
Aug 23 Javascript
javascript设计模式--策略模式之输入验证
Nov 27 Javascript
基于JavaScript实现动态添加删除表格的行
Feb 01 Javascript
Node.js之网络通讯模块实现浅析
Apr 01 Javascript
AngularJS实现进度条功能示例
Jul 05 Javascript
Vue中render方法的使用详解
Jan 26 Javascript
关于vue面试题汇总
Mar 20 Javascript
JavaScript中的连续赋值问题实例分析
Jul 12 Javascript
js实现跟随鼠标移动的小球
Aug 26 Javascript
原生JS运动实现轮播图
Jan 02 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
AM/FM收音机的安装与调试
2021/03/02 无线电
东方红 - 来复式再生机的修复
2021/03/02 无线电
php+mysql写的简单留言本实例代码
2008/07/25 PHP
PHP查询网站的PR值
2013/10/30 PHP
简单了解将WordPress中的工具栏移到底部的小技巧
2015/12/31 PHP
Yii2框架实现数据库常用操作总结
2017/02/08 PHP
js自定义事件代码说明
2011/01/31 Javascript
在网站上应该用的30个jQuery插件整理
2011/11/03 Javascript
原生js实现复制对象、扩展对象 类似jquery中的extend()方法
2014/08/30 Javascript
JQuery选择器、过滤器大整理
2015/05/26 Javascript
js实现Form栏显示全格式时间时钟效果代码
2015/08/19 Javascript
关注jquery技巧提高jquery技能(前端开发必学)
2015/11/02 Javascript
利用bootstrapValidator验证UEditor
2016/09/14 Javascript
详解jQuery uploadify文件上传插件的使用方法
2016/12/16 Javascript
原生js jquery ajax请求以及jsonp的调用方法
2017/08/04 jQuery
jquery获取链接地址和跳转详解(推荐)
2017/08/15 jQuery
Vue实现搜索结果高亮显示关键字
2019/05/28 Javascript
sortable+element 实现表格行拖拽的方法示例
2019/06/07 Javascript
微信小程序自定义波浪组件使用方法详解
2019/09/21 Javascript
跟老齐学Python之Python安装
2014/09/12 Python
Python实现扣除个人税后的工资计算器示例
2018/03/26 Python
Python 25行代码实现的RSA算法详解
2018/04/10 Python
Python使用Selenium模块实现模拟浏览器抓取淘宝商品美食信息功能示例
2018/07/18 Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
2020/04/27 Python
python中元组的用法整理
2020/06/15 Python
Python计算信息熵实例
2020/06/18 Python
浅析Python 条件控制语句
2020/07/15 Python
Html5上传图片 移动端、PC端通用代码
2016/06/08 HTML / CSS
Html5让容器充满屏幕高度或自适应剩余高度的布局实现
2020/05/14 HTML / CSS
应届毕业生个人求职自荐信
2014/01/06 职场文书
河童之夏观后感
2015/06/11 职场文书
小学教师暑期培训心得体会
2016/01/09 职场文书
教你用Java Swing实现自助取款机系统
2021/06/11 Java/Android
python百行代码实现汉服圈图片爬取
2021/11/23 Python
python井字棋游戏实现人机对战
2022/04/28 Python
Sentry的安装、配置、使用教程(Sentry日志手机系统)
2022/07/23 Python