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 相关文章推荐
跟着Jquery API学Jquery之一 选择器
Apr 07 Javascript
javascript获取元素CSS样式代码示例
Nov 28 Javascript
JS判断对象是否存在的10种方法总结
Dec 23 Javascript
form.submit()不能提交表单的错误原因及解决方法
Oct 13 Javascript
jquery实现动态操作select选中
Feb 11 Javascript
javascript获取select值的方法分析
Jul 02 Javascript
简单的分页代码js实现
May 17 Javascript
easyui-edatagrid.js实现回车键结束编辑功能的实例
Apr 12 Javascript
ES6正则表达式的一些新功能总结
May 09 Javascript
JS实现利用两个队列表示一个栈的方法
Dec 13 Javascript
详解vscode中vue代码颜色插件
Oct 11 Javascript
解决Antd Table表头加Icon和气泡提示的坑
Nov 17 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
PHP 危险函数解释 分析
2009/04/22 PHP
php adodb连接mssql解决乱码问题
2009/06/12 PHP
php 删除一个数组中的某个值.兼容多维数组!
2012/02/18 PHP
解析php addslashes()与addclashes()函数的区别和比较
2013/06/24 PHP
php中filter_input函数用法分析
2014/11/15 PHP
PHP大神的十大优良习惯
2016/09/14 PHP
让任务管理器中的CPU跳舞的js代码
2008/11/01 Javascript
JQuery 选择和过滤方法代码总结
2010/11/19 Javascript
JavaScript 原型继承
2011/12/26 Javascript
Jquery EasyUI的添加,修改,删除,查询等基本操作介绍
2013/10/11 Javascript
js图片预加载示例
2014/04/30 Javascript
window.location的重写及判断location是否被重写
2014/09/04 Javascript
JS实现的车标图片提示效果代码
2015/10/10 Javascript
微信小程序 下拉菜单简单实例
2017/04/13 Javascript
Angular+Node生成随机数的方法
2017/06/16 Javascript
JS去掉字符串末尾的标点符号及删除最后一个字符的方法
2017/10/24 Javascript
vue-router权限控制(简单方式)
2018/10/29 Javascript
BootStrap表单验证中的非Submit类型按钮点击时触发验证的坑
2019/09/05 Javascript
js实现贪吃蛇小游戏(加墙)
2020/07/31 Javascript
如何利用JavaScript编写一个格斗小游戏
2021/01/06 Javascript
Python字符串逐字符或逐词反转方法
2015/05/21 Python
Python简单定义与使用字典dict的方法示例
2017/07/25 Python
Python通过future处理并发问题
2017/10/17 Python
学习Python selenium自动化网页抓取器
2018/01/20 Python
python+opencv边缘提取与各函数参数解析
2020/03/09 Python
python新式类和经典类的区别实例分析
2020/03/23 Python
在vscode中启动conda虚拟环境的思路详解
2020/12/25 Python
python中time.ctime()实例用法
2021/02/03 Python
用HTML5实现手机摇一摇的功能的教程
2012/10/30 HTML / CSS
2014年科室工作总结范文
2014/12/19 职场文书
2014年精神文明工作总结
2014/12/23 职场文书
街道党风廉政建设调研报告
2015/01/01 职场文书
三潭印月的导游词
2015/02/12 职场文书
党校学习个人总结
2015/02/15 职场文书
2019员工保密协议书(3篇)
2019/09/23 职场文书
vue-router中hash模式与history模式的区别
2021/06/23 Vue.js