HTML5实战与剖析之classList属性

classList属性究竟是干什么的,我们先撇下classList不管。我们考虑这么一个问题,那就是我们如何将拥有多个类名的元素中的其中一个类名删除呢?梦龙较劲脑汁儿终于想到一个实现的方法。将拥有类名li、meng和long,三个类名中的类名meng删除。代码如下

  HTML代码

  1. view source

    print?

    1.<div class="li meng long">梦龙小站</div>

  JavaScript代码

view source

print?

01.//获取要删除类名meng的div 

02.var div = document.getElementsByTagName("div")[0]; 

03.

04.//获取类名字符串并拆分成数组 

05.var allClassName = div.className.split(" "); 

06.

07.//找到要删除的类名 

08.var i, len,  

09.pos = -1; 

10.

11.for(i=0, len = allClassName.length; i < len; i++){ 

12.if(allClassName[i] == "meng"){ 

13.pos = i; 

14.break

15.

16.

17.

18.//删除类名 

19.allClassName.splice(pos, 1); 

20.

21.alert(allClassName) //li,long 

22.

23.//将其余的类名拼成字符串并重新添加到元素的类名中 

24.div.className = allClassName.join(" "); 

  预览效果

  为了从的元素类名中删除”meng”,上面这些代码都是必须的。通过类似的算法替换类名并确认元素中是否包含该类名。若是添加类名可以通过拼接字符串完成,但是必须通过检测确定不会多次添加相同的类名,很多JavaScript库都是实现了这个方法,简化操作。而删除类名则是先要获取已经有的类名,找到要删除类名的位置,然后进行删除。

  通过上面的方法可以看出,要实现一个简单的删除功能要写好几行代码,若不想写好几行代码就得引入一个库用库中的方法才可以。有了HTML5就不用那么麻烦了,我们可以用HTML5中的classList属性来完成这些步骤。这个classList属性是新集合类型DOMTokenList的实例。与其他DOM集合类似。DOMTokenList有一个表示自己包含多少元素的length属性,而要取得每个元素可以使用item()方法也可以使用方括号语法。此外,下面是给这个新类型定义的方法。

   1、remove(value) 

  remove(value)方法表示从列表中删除给定的字符串。小例子如下:

  HTML代码

view source

print?

1.<div class="li meng long">梦龙小站</div>

  JavaScript代码

view source

print?

1.//获取要删除类名meng的div 

2.var div = document.getElementsByTagName("div")[0]; 

3.

4.alert(div.classList)  //li meng long 

5.

6.div.classList.remove("meng")  

7.

8.alert("div.className: " + div.className)  //div.className: li long 

  预览效果

  2、contains(value) 

  contains(value)方法表示列表中是否存在给定的值,如果存在就返回”true”,否则返回”false”小例子如下:

  HTML代码

  1. view source

    print?

    1.<div class="li meng long">梦龙小站</div>

  JavaScript代码

view source

print?

1.//获取要删除类名meng的div 

2.var div = document.getElementsByTagName("div")[0]; 

3.

4.alert(div.classList.contains("meng")) //true 

5.

6.alert(div.classList.contains("menglong")) //false

  3、add(value) 

  add(value)方法表示列表中的字符串添加到列表中。如果已经存在就不添加了。小例子如下:

  HTML代码

1.<div class="li meng long">梦龙小站</div>

  JavaScript代码

view source

print?

1.//添加类名 menglong 

2.

3.//获取要删除类名meng的div 

4.var div = document.getElementsByTagName("div")[0]; 

5.

6.div.classList.add("menglong"); 

7.

8.alert("div.className: " + div.className)  //div.className: li meng long menglong

  预览效果

  4、toggle(value) 

  toggle(value)方法,如果列表中已经存在给定的值,删除它;如果列表中没有给定的值,添加它。小例子如下:

  HTML代码

<div class="li meng long">梦龙小站</div

<div class="li long">梦龙小站</div>

  JavaScript代码

//切换类名 meng 

 

//获取要删除类名li的div 

var div = document.getElementsByTagName("div"); 

var i, len; 

 

for(i=0, len = div.length; i< len; i++){ 

div[i].classList.toggle("meng"); 

 

alert("div[0].className: " + div[0].className)  //div[0].className: li long 

alert("div[1].className: " + div[1].className)  //div[1].className: li meng long 

  预览效果

  有关classList的小例子们已经为大家呈现了,通过小例子就能把这些小方法展现和解释清楚了。有了classList,除非你需要全部删除所有类名,或者完全重写元素的class属性,否则用不到className属性了,而且还附加很多实用的方法。支持classList属性的浏览器有Firefox 3.6+ 和Chrome。

HTML5实战与剖析之classList属性

时间: 2024-10-13 16:01:24

HTML5实战与剖析之classList属性的相关文章

HTML5实战与剖析之原生拖拽(四可拖动dragable属性和其他成员)

可拖动dragable属性 之前我们已经为大家介绍过几篇有关HTML5中原生拖拽的相关知识了.今天为大家介绍HTML5拖拽中的其他一些小东东,闲话不多说赶快一起看看吧. 在默认情况下,链接.文本和图像是可以拖动的,不用再写代码即可拖动.如果想让其他元素标签也可以拖动,那么只有HTML5能实现了.HTML5为所有HTML元素规定了dragable属性,表示元素是否可以拖动.链接和图像的标签中自动将dragable属性自动被设置成true,其他元素的dragable属性的默认值是false. 支持d

HTML5实战与剖析之历史管理(history对象)

HTML5新添加了对历史的管理,更新了history对象让管理历史状态更加方便了.在现代Web应用中,用户可以通过"前进"和"后退"按钮进行历史页面的切换.这让一些不在新页面中打开的新页面前进后退自如,提高了用户体验. 通过haschange事件,可以知道URL的参数什么时候发生了变化,也就是什么时候该有所反应.通过状态管理的API,能够在不加载新页面的情况下改变浏览器的URL.所以需要使用history.pushState()方法.history.pushStat

HTML5实战与剖析之媒体元素(3、媒体元素的事件及方法)

HTML5中的媒体元素除了拥有非常多的属性之外,video标签和audio标签还能够出发非常多事件和方法. 这些方法监控着不同的属性的变化,这些变化有可能是媒体播放的结果,也可能是用户操作媒体的结果. 以下就为大家開始介绍媒体元素的相关事件. abort:触发时机是下载中断. canplay:在能够播放的时候,readyState的值为2的时候触发. canplaythrough:readyState的值为3的时候,触发.播放能够继续,而应该不会中断的时候触发. canshowcurrentfr

HTML5实战与剖析之Web存储机制(Web Storage)

Web Storage是以Key-Value的形式进行数据持久性存储.Web Storage是为了克服由cookie带来的一些限制而产生的.当数据需要被严格控制在客户端上的时候,无须持续地将数据发回服务器.Web Storage的目标有两个:提供一种存储会话数据的路径;提供存储大量可以跨会话存在的数据的机制. 最初的Web Storage规范包含了两个对象的定义:sessionStorage对象和globalStorage对象.这两个对象在支持的浏览器中都是以window对象属性的形式存在,支持

HTML5实战与剖析之媒体元素

随着HTML5的到来,flash在手机端全部不能得到支持,这就使一项以flash制作的音乐播放和视频播放只能用HTML5中的媒体标签video标签和audio标签来制作了.很恰巧的是,移动端对HTML5中的媒体标签video标签和audio标签支持的非常好.这就使HTML5在移动端很流行. video标签和audio标签也提供了很实用的JavaScript API,允许创建自定义的控件.两个标签的用法如下. HTML代码 view source print? 1.<!-- 视频标签 --> 2

HTML5实战与剖析之离线应用

离线的Web应用,就是在设备不能上网的时候还能运行应用.HTML5把离线应用作为重点,主要是开发人员的心愿.离线应用的开发的步骤有:首先应该知道设备是否能够上网;然后应该还能访问一定的资源(如图像.CSS.JavaScript等),只有这样才能正常工作. 离线检测 想要开发离线Web应用第一步就得知道用户的设备的上网情况.HTML5为此定义了一个navigator.onLine属性,这个属性值为true的时候表示设备能够上网,表示false的时候表示设备不能上网.这个属性的关键在于浏览器必须知道

HTML5实战与剖析之使用HTML5 WebSocket API

通过引入一个简洁的接口(见下面的清单),开发者可以替代技术,如长轮询和"永远帧,因此进一步降低延迟. 后台代码 [Constructor(in DOMString url, optional in DOMString protocol)] [构造函数(DOMString url,可选DOMString协议)] interface WebSocket { //readonly attribute DOMString URL; //只读的属性DOMString URL; // ready state

HTML5实战与剖析之WebSockets简介

HTML5 WebSockets规范定义了一个API,允许web页面使用WebSockets协议与远程主机双向沟通.介绍了WebSocket接口,并定义了一种全双工通信通道,通过一个套接字在网络上.HTML5 WebSockets提供极大的减少了不必要的网络流量和延迟而不能攀登的轮询和长轮询的解决方案是用来模拟全双工连接通过维护两个连接. HTML5 WebSockets账户代理和防火墙等网络危害,使得流媒体可以在任何连接,和能够支持在单个连接上游和下游的通信,HTML5 WebSockets-

HTML5实战与剖析之媒体元素(4、检测编解码器的支持和Audio构造函数)

HTML5媒体元素检测编解码器的支持情况 虽然媒体元素可以实现音频和视频功能,但是并不是所有浏览器都支持video标签和audio标签的所有编解码器,这意味着开发人员必须提供很多歌媒体来源.在JavaScript API中能够检测浏览器是否支持某种格式和编解码器.这两个媒体元素都有一个canPlayType()方法,该方法接收一种格式/编解码器字符串,返回"probably"."maybe"或者""(空字符串).空字符串是假值,而"pr