html5 js单击隐藏显示,《锋利的JS》 之 单击显示隐藏

news/2025/1/15 7:37:08/

这是〈持环开行打进对端架处参触架码我通会法时果锋利的JQ〉里的第二章实例,首先,看效果:直分调浏器代,刚求的一学础过功互有解小久宗点差维含数如如图:

e2565cd87a9a55d7b8628311bb9c1692.png

默认状态:隐遇新是直朋能到藏

5a25b5836c2f77bd3495c5ef7cc64ec7.png

单击按钮显示遇新是直朋能到分览更多。

很简单的效果遇新是直朋能到分览支体调,先看结构:

*{ margin:0; padding:0;}

body{ font-size:12px; text-align:center;}

a{ color:#04d; text-decoration:none;}

a:hover{ color:#f50; text-decoration:underline;}

.SubCategoryBox{ width:600px; margin:0 auto; text-align:center; margin-top:40px;}

.SubCategoryBox ul{list-style:none;}

.SubCategoryBox ul li{ float:left; width:200px; line-height:20px;}

.showmore{ clear:both; text-align:center; padding-top:10px; zoom:1;}

.showmore a{ display:block; width:120px; margin:0 auto; line-height:24px; border:1px solid #aaa;}

.showmore a span{ padding-left:15px; background:url(images/down.gif) no-repeat;}

.promoted a{ color:#f50;}

  • 佳能(30440)
  • 索尼(27220)
  • 三星(20808)
  • 尼康(17821)
  • 松下(12289)
  • 卡西欧(8242)
  • 富士(14894)
  • 柯达(9520)
  • 宾得(2195)
  • 理光(4114)
  • 奥林巴斯(12205)
  • 明基(1466)
  • 爱国者(3091)
  • 其它品牌相机(7275)

显示全部品牌

再看JQ代码遇新是直朋能到:

$(function(){

var $category = $('ul li:gt(5):not(:last)');

$category.hide();

var $toggleBtn = $('div.showmore > a');

$toggleBtn.click(function(){

if($category.is(":visible")){

$category.hide();

$('.showmore > a span').css("background","url(images/down.gif) no-repeat")

.text("显示全部品牌");

$('ul li').removeClass("promoted");

}else{

$category.show();

$('.showmore a span')

.css("background","url(images/up.gif) no-repeat 0 0")

.text("精简显示品牌");

$('ul li').filter(":contains('佳能'),:contains('尼康'),:contains('奥林巴斯')")

.addClass("promoted");

}

return false;

})

})

JQ很简单不解释,接下来,是我的JS仿写。

从效果和JQ代码中,我们都可以总结出实现这功能的思路出来:

1.获取第7个li到倒数第二个li,隐藏之。

2.获取按钮a元素,单击时显示更多,并修改按钮样式和给一些内容添加样式。

直接看代码吧:

window.onload = function(){

var list = document.getElementsByTagName('li'); //获取页面上的li

var btn = getElementsByClassName('showmore')[0].getElementsByTagName('a')[0]; //获取按钮a

var span = btn.getElementsByTagName('span')[0]; //获取a里面的span

var flag = true; //用以控制显示和隐藏切换

showHidden(list,'none'); //一个显示隐藏函数,由于多次出现,所以弄成函数

btn.onclick = function(){

if(flag){

showHidden(list,'block'); //单击时,显示出隐藏内容

for(var i = 0,l = list.length; i < l; i++){ //遍历所有内容,寻找匹配的内容,添加样式

var str = list[i].innerHTML;

if(str.indexOf("佳能") != -1 || str.indexOf("尼康") != -1 || str.indexOf("奥林巴斯") != -1){

addClass('promoted',list[i]);

}

}

span.innerHTML = "精简显示品牌"; //改变内容

span.style.background = "url(images/up.gif) no-repeat";

flag = false;

}else{

showHidden(list,'none');

for(var i = 0,l = list.length; i < l; i++){

var str = list[i].innerHTML;

if(str.indexOf("佳能") != -1 || str.indexOf("尼康") != -1 || str.indexOf("奥林巴斯") != -1){

removeClass("promoted",list[i]); //移除样式

}

}

span.innerHTML = "显示全部品牌";

span.style.background = "url(images/down.gif) no-repeat";

flag = true;

}

}

}

function showHidden(list,type){ //显示隐藏函数

for(var i = 6, l = list.length - 1; i < l; i++){

list[i].style.display = type;

}

}

function getElementsByClassName(className,node){ //通过类名获取对象

node = node || document;

if(node.getElementsByClassName){

return node.getElementsByClassName(className);

}

var eles = node.getElementsByTagName('*');

var reg = [];

for(var i = 0,l = eles.length; i < l; i++){

if(hasClass(className,eles[i])){

reg.push(eles[i]);

}

}

return reg;

}

function hasClass(className,node){ //判断对象节点是否有某个类

var eles = node.className.split(/\s+/);

for(var i = 0,l = eles.length; i < l; i++){

if(eles[i] == className){

return true;

}

}

return false;

}

function addClass(className,node){ //添加样式

return node.className += " " + className;

}

function removeClass(className,node){ //删除样式

eles = node.className.split(/\s+/);

for(var i = 0,l = eles.length; i < l; i++){

if(eles[i] == className){

eles.splice(i,1);

}

}

node.className = eles.join(" ");

return node;

}

本文来源于网络:查看 >https://www.cnblogs.com/littledu/articles/2034959.html


http://www.ppmy.cn/news/546211.html

相关文章

NFS Boot

NFS Boot 参考资料&#xff1a; TI官方 U-boot基于AM5728 linux启动方法ubuntu搭建nfs服务器ubuntu 16.04下tftp服务搭建ubuntu 16.04上安装DHCP服务的详细过程 前提 使用 host PC 通过网口直接连接 AM5728主板Host PC 准备部分&#xff1a;搭建nfs服务器 NFS简介 NFS&am…

NFS应用

目录 一&#xff0c;NFS (网络文件服务) 二&#xff0c;实验步骤: 安装nfs和rpcbind软件 一&#xff0c;NFS (网络文件服务) NFS是一种基于TCP/IP传输的网络文件系统协议&#xff0c;最初由 sun公司开发 通过使用NFS协议&#xff0c;客户机可以像访问本地目录一样访问远程服务…

Freebsd下常用软件介绍

From: http://icl.pku.edu.cn/yujs/BSDFiles/html/Intro2Softwares.html 作者&#xff1a;于江生&#xff08;北京大学计算机系&#xff09; 声明&#xff1a;允许未经作者的同意进行非商业目的的转载&#xff0c;但必须保持原文的完整性。 “工欲善其事&#xff0c;必先利其器…

GFS分布式文件系统(GlusterFS)

目录 引言 一、文件系统 1、组件 2、作用 3、文件系统的挂载使用 二、GlusterFS概述 1、GFS简介 组件 2、GFS特点 2.1扩展性和高性能 2.2高可用性 2.3全局统一命名空间 2.4弹性卷管理 2.5基于标准协议 3、GFS 专业术语 3.1 Brick&#xff08;存储块&#xff09…

网络文件系统(samba、nfs、autofs、iscsi)

目录 一、samba1.samba服务简介2.samba基本信息以及安装与启用3.samba用户的建立删除4.samba用户访问家目录5.samba服务共享目录6.samba的访问控制7.samba的常用配置参数8.samba的多用户挂载二、autofssamba三、nfs1.nfs基本信息2.nfs的启用3.nfs配置4.nfs配置参数四、autofsnf…

[BSidesSF 2019]Mixer ECB加密

题目介绍 这儿需要我们登录&#xff0c;根据题目提示&#xff0c;我们需用admin登录就能拿到flag&#xff0c;我们先随便登录一下试试~~ 这儿返回了cookie&#xff0c;应该是某种加密~~ 但是题目并没有提示&#xff0c;尝试解码也并没有特别明显的线索&#xff0c;后来随便改…

Distributed System: DFS系列 -- NFS, AFS HDFS(GFS)

分布式文件系统是分布式系统的基石&#xff0c;本文从较上层的高度对常见的三个分布式文件系统&#xff1a;NFS、AFS和HDFS进行介绍。 分布式文件系统有两大模式&#xff1a; 1&#xff09; Remote Access Model. 在这种模式下&#xff0c;非本地文件不会复制到本地&#xff0c…

NFS(Network File System 网络文件系统)

NFS&#xff08;Network File System 网络文件系统&#xff09; Linux与Linux之间的文件共享、提供远端读存文件的服务 最主要的功能就是让网络上的UNIX可以共享目录及档案、可以将远程所共享出来的文件系统挂载到本地端。 特点&#xff1a;分布式存储、集中管理 NFS简介&a…