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 相关文章推荐
extjs fckeditor集成代码
May 10 Javascript
JQuery实现的在新窗口打开链接的方法小结
Apr 22 Javascript
jQuery中创建实例与原型继承揭秘
Dec 21 Javascript
JavaScript编程中window的location与history对象详解
Oct 26 Javascript
分享jQuery插件的学习笔记
Jan 14 Javascript
Three.js获取鼠标点击的三维坐标示例代码
Mar 24 Javascript
mui框架移动开发初体验详解
Oct 11 Javascript
如何编写一个d.ts文件的步骤详解
Apr 13 Javascript
微信小程序实现蒙版弹窗效果
Nov 01 Javascript
Vue学习之axios的使用方法实例分析
Jan 06 Javascript
js实现select下拉框选择
Jan 11 Javascript
解决vue+router路由跳转不起作用的一项原因
Jul 19 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
做一个有下拉功能的留言版
2006/10/09 PHP
Yii使用ajax验证显示错误messagebox的解决方法
2014/12/03 PHP
Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题
2015/03/27 PHP
php恢复数组的key为数字序列的方法
2015/04/28 PHP
10款PHP开源商城系统汇总介绍
2015/07/23 PHP
支付宝服务窗API接口开发php版本
2016/07/20 PHP
Prototype使用指南之range.js
2007/01/10 Javascript
JS字符串累加Array不一定比字符串累加快(根据电脑配置)
2012/05/14 Javascript
ExtJs中gridpanel分组后组名排序实例代码
2013/12/02 Javascript
js使用for循环查询数组中是否存在某个值
2014/08/12 Javascript
jQuery和AngularJS的区别浅析
2015/01/29 Javascript
js实现颜色阶梯渐变效果(Gradient算法)
2017/03/21 Javascript
基于Cookie常用操作以及属性介绍
2017/09/07 Javascript
详解JSON.stringify()的5个秘密特性
2020/05/26 Javascript
vue 弹出遮罩层样式实例
2020/07/22 Javascript
微信小程序入门之指南针
2020/10/22 Javascript
在Vue中使用CSS3实现内容无缝滚动的示例代码
2020/11/27 Vue.js
[00:52]DOTA2齐天大圣预告片
2016/08/13 DOTA
Python中函数及默认参数的定义与调用操作实例分析
2017/07/25 Python
Python django使用多进程连接mysql错误的解决方法
2018/10/08 Python
使用Python进行体育竞技分析(预测球队成绩)
2019/05/16 Python
python基于plotly实现画饼状图代码实例
2019/12/16 Python
如何使用repr调试python程序
2020/02/28 Python
python 插入日期数据到Oracle实例
2020/03/02 Python
会走动的图形html5时钟示例
2014/04/27 HTML / CSS
美国汽车轮胎和轮毂销售网站:Tire Rack
2018/01/11 全球购物
Invicta手表官方商店:百年制表历史的瑞士腕表品牌
2019/09/26 全球购物
如何在C# winform中异步调用web services
2015/09/21 面试题
自我评价是什么
2014/01/04 职场文书
电大毕业生自我鉴定
2014/04/10 职场文书
信仰心得体会
2014/09/05 职场文书
上课随便讲话检讨书
2014/09/12 职场文书
一份恶作剧的检讨书
2014/09/13 职场文书
初中生物教学反思
2016/02/20 职场文书
JavaScript 中for/of,for/in 的详细介绍
2021/11/17 Javascript