javascript显示隐藏层比较不错的方法分析


Posted in Javascript onSeptember 30, 2008

这是一个Q&A的页面,设计师希望能够点击相关的问题后,在它下方显示对应的答案。这是一个比较常见功能,通常的解决办法是把“答案”当作整个问题容器的子元素,然后点击父元素上的按钮后展开对应的子元素。通过父子元素的对应关系来匹配标题和答案。

但是当初写html的时候并没有考虑到脚本编写(需求是后加的),所以,答案和标题没有父子关系可以对应。 html代码如下。

所以,这里需要用到另一种方法来匹配答案和标题。我们可以通过捕捉元素的位置来匹配它们。也就是说第一条标题,对应的肯定是整个序列中的第一条答案,第二条标题对应的肯定是第二条答案。 这样就可以无视html结构来控制它们的对应关系了。

<ul class="qusetionList"> 
<li class="liHeader"><span class="colABC-A">??</span><span class="colABC-B">?祟}</span><span class="colABC-C">??者/???者</span></li> <li class="liBody"><span class="colABC-A">1</span><span class="colABC-B">想要?小店需要付???</span><span class="colABC-C"><a href="#" title="" class="openLink"></a> 客服</span></li> 
<li class="answer"><span class="colABC-B"> 
??段於策?其所以不收取任何?用,?使用者不用??摹?lt;BR> 
除了加值服?盏墓δ苣=M之外。</span><span class="colABC-C"><a href="#" title="" class="closeLink"></a> 客服</span></li> 
<li class="liBody"><span class="colABC-A">2</span><span class="colABC-B">想要?小店需要付???</span><span class="colABC-C"><a href="#" title="" class="openLink"></a> 客服</span></li> 
<li class="answer"><span class="colABC-B"> 
??段於策?其所以不收取任何?用,?使用者不用??摹?lt;BR> 
除了加值服?盏墓δ苣=M之外。</span><span class="colABC-C"><a href="#" title="" class="closeLink"></a> 客服</span></li> 
</ul>

脚本解释:当点击openLink这个图标时,显示和openLink在序列中位置相同的answer。这里需要将onclick事件放在闭包里面,等到for循环结束后才被激活。如果没有这层闭包,那不管点击哪个openLink,显示的都将是openLink.length的值。

document.getElementsByClassName = function(eleClassName) 
{ 
var getEleClass = [];//定义一个数组 
var myclass = new RegExp("\\b"+eleClassName+"\\b");//创建一个正则表达式对像 
var elem = this.getElementsByTagName("*");//获取文档里所有的元素 
for(var h=0;h<elem.length;h++) 
{ 
var classes = elem[h].className;//获取class对像 
if (myclass.test(classes)) getEleClass.push(elem[h]);//正则比较,取到想要的CLASS对像 
} 
return getEleClass;//返回数组 
} 
//上面这是捕捉class的方法,我一直用它,复制过来就OK。 var answer = document.getElementsByClassName("answer"); 
var openLink = document.getElementsByClassName("openLink"); 
var closeLink = document.getElementsByClassName("closeLink"); 
for (i = 0; i< openLink.length ; i++ ) 
{ 
( 
function(i){ 
openLink[i].onclick = function (){ 
var j = i; 
answer[j].style.display = "block" 
} 
closeLink[i].onclick = function (){ 
var j = i; 
answer[j].style.display = "none" 
} 
} 
)(i); 
}
Javascript 相关文章推荐
JS控件ASP.NET的treeview控件全选或者取消(示例代码)
Dec 16 Javascript
js中arguments,caller,callee,apply的用法小结
Jan 28 Javascript
Javascript中的关键字和保留字整理
Oct 16 Javascript
js根据鼠标移动速度背景图片自动旋转的方法
Feb 28 Javascript
javascript制作2048游戏
Mar 30 Javascript
JavaScript中用于四舍五入的Math.round()方法讲解
Jun 15 Javascript
JavaScript开发者必备的10个Sublime Text插件
Feb 27 Javascript
javascript常用经典算法详解
Jan 11 Javascript
JavaScript优化以及前段开发小技巧
Feb 02 Javascript
基于vue-simplemde实现图片拖拽、粘贴功能
Apr 12 Javascript
Layui弹出层 加载 做编辑页面的方法
Sep 16 Javascript
JavaScript中的null和undefined用法解析
Sep 30 Javascript
javascript不同页面传值的改进版
Sep 30 #Javascript
简明json介绍
Sep 28 #Javascript
正则表达式判断是否存在中文和全角字符和判断包含中文字符串长度
Sep 27 #Javascript
Javascript操作select方法大全[新增、修改、删除、选中、清空、判断存在等]
Sep 26 #Javascript
验证用户是否修改过页面的数据的实现方法
Sep 26 #Javascript
不用AJAX和IFRAME,说说真正意义上的ASP+JS无刷新技术
Sep 25 #Javascript
js每次Title显示不同的名言
Sep 25 #Javascript
You might like
jQuery 源码分析笔记
2011/05/25 PHP
PHP 小心urldecode引发的SQL注入漏洞
2011/10/27 PHP
ThinkPHP控制器里javascript代码不能执行的解决方法
2014/11/22 PHP
ExtJS 下拉多选框lovcombo
2010/05/19 Javascript
javascript编码的几个方法详细介绍
2013/01/06 Javascript
Javascript异步编程模型Promise模式详细介绍
2014/05/08 Javascript
ECMAScript6函数剩余参数(Rest Parameters)
2015/06/12 Javascript
Ionic如何创建APP项目
2016/06/03 Javascript
浅谈js中的三种继承方式及其优缺点
2016/08/10 Javascript
jQuery Mobile和HTML5开发App推广注册页
2016/11/07 Javascript
详解vue-router 路由元信息
2017/09/13 Javascript
js原生实现移动端手指滑动轮播图效果的示例
2018/01/02 Javascript
nodejs实现套接字服务功能详解
2018/06/21 NodeJs
关于微信小程序bug记录与解决方法
2018/08/15 Javascript
Vue页面切换和a链接的本质区别详解
2019/11/12 Javascript
JavaScript实现移动端弹窗后禁止滚动
2020/05/25 Javascript
vue中配置scss全局变量的步骤
2020/12/28 Vue.js
python使用线程封装的一个简单定时器类实例
2015/05/16 Python
读取json格式为DataFrame(可转为.csv)的实例讲解
2018/06/05 Python
python使用turtle库与random库绘制雪花
2018/06/22 Python
面向初学者的Python编辑器Mu
2018/10/08 Python
python存储16bit和32bit图像的实例
2018/12/05 Python
对python pandas读取剪贴板内容的方法详解
2019/01/24 Python
python 多线程重启方法
2019/02/18 Python
Python参数传递及收集机制原理解析
2020/06/05 Python
英国著名国际平价时尚男装品牌:Topman
2016/08/27 全球购物
美国家居装饰和豪华家具购物网站:One Kings Lane
2018/12/24 全球购物
英国时尚高尔夫服装购物网站:Trendy Golf
2020/01/10 全球购物
记者岗位职责
2014/01/06 职场文书
大学生安全责任书
2014/07/25 职场文书
手术室护士节演讲稿
2014/08/27 职场文书
处罚决定书范文
2015/06/24 职场文书
婚礼领导致辞大全
2015/07/28 职场文书
小学作文指导之如何写人?
2019/07/08 职场文书
Windows Server 2012配置DNS服务器的方法
2022/04/29 Servers
Win Server2016远程桌面如何允许多用户同时登录
2022/06/10 Servers