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中的undefined,null,&quot;&quot;,0和false
Mar 08 Javascript
JS实现图片放大镜效果的方法
Feb 27 Javascript
详解JavaScript编程中的数组结构
Oct 24 Javascript
Angularjs整合微信UI(weui)
Mar 15 Javascript
Kindeditor在线文本编辑器如何过滤HTML
Apr 14 Javascript
微信小程序实现多个按钮toggle功能的实例
Jun 13 Javascript
详解node.js中的npm和webpack配置方法
Jan 21 Javascript
p5.js入门教程之平滑过渡(Easing)
Mar 16 Javascript
vuejs 切换导航条高亮(路由菜单高亮)的方法示例
May 29 Javascript
vue中Element-ui 输入银行账号每四位加一个空格的实现代码
Sep 14 Javascript
javascript前端实现多视频上传
Dec 13 Javascript
JS获取一个字符串中指定字符串第n次出现的位置
Feb 10 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
IIS下PHP连接数据库提示mysql undefined function mysql_connect()
2010/06/04 PHP
非常好用的两个PHP函数 serialize()和unserialize()
2012/02/04 PHP
深入了解PHP中的Array数组和foreach
2016/11/06 PHP
利用PHP_XLSXWriter代替PHPExcel的方法示例
2017/07/16 PHP
php实现统计二进制中1的个数算法示例
2018/01/23 PHP
PHPUnit测试私有属性和方法功能示例
2018/06/12 PHP
jQuery解决下拉框select设宽度时IE 6/7/8下option超出显示不全
2013/05/27 Javascript
简约JS日历控件 实例代码
2013/07/12 Javascript
利用进制转换压缩数字函数分享
2014/01/02 Javascript
使用jquery.qrcode生成彩色二维码实例
2014/08/08 Javascript
JavaScript定时显示广告代码分享
2015/03/02 Javascript
jQuery实现时尚漂亮的弹出式对话框实例
2015/08/07 Javascript
学习JavaScript设计模式(代理模式)
2015/12/03 Javascript
jquery UI Datepicker时间控件的使用及问题解决
2016/04/28 Javascript
Centos7 中 Node.js安装简单方法
2016/11/02 Javascript
bootstrap动态添加面包屑(breadcrumb)及其响应事件的方法
2017/05/25 Javascript
详解如何在项目中使用jest测试react native组件
2018/02/09 Javascript
Vue2.x Todo之自定义指令实现自动聚焦的方法
2019/01/08 Javascript
命令行批量截图Node脚本示例代码
2019/01/25 Javascript
js核心基础之闭包的应用实例分析
2019/05/11 Javascript
angularjs1.X 重构controller 的方法小结
2019/08/15 Javascript
Python中splitlines()方法的使用简介
2015/05/20 Python
Python实现递归遍历文件夹并删除文件
2016/04/18 Python
Python进阶_关于命名空间与作用域(详解)
2017/05/29 Python
python3实现zabbix告警推送钉钉的示例
2019/02/20 Python
Python3实现的回文数判断及罗马数字转整数算法示例
2019/03/27 Python
pandas DataFrame 交集并集补集的实现
2019/06/24 Python
python基于json文件实现的gearman任务自动重启代码实例
2019/08/13 Python
Python 函数list&amp;read&amp;seek详解
2019/08/28 Python
python 爬取疫情数据的源码
2020/02/09 Python
Jupyter notebook命令和编辑模式常用快捷键汇总
2020/11/17 Python
css3背景_动力节点Java学院整理
2017/07/11 HTML / CSS
市场营销管理毕业生自荐信
2014/03/03 职场文书
院系推荐意见
2015/06/05 职场文书
先进教师个人主要事迹材料
2015/11/03 职场文书
springboot中的pom文件 project报错问题
2022/01/18 Java/Android