HTML5实战与剖析之classList属性
classList属性究竟是干什么的,我们先撇下classList不管。我们考虑这么一个问题,那就是我们如何将拥有多个类名的元素中的其中一个类名删除呢?梦龙较劲脑汁儿终于想到一个实现的方法。将拥有类名li、meng和long,三个类名中的类名meng删除。代码如下
HTML代码
1.
<
div
class
=
"li meng long"
>梦龙小站</
div
>
JavaScript代码
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代码
1.
<
div
class
=
"li meng long"
>梦龙小站</
div
>
JavaScript代码
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.
<
div
class
=
"li meng long"
>梦龙小站</
div
>
JavaScript代码
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代码
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属性的更多相关文章
- HTML5实战与剖析之字符集属性(charset和defaultCharset)
HTML5对字符集属性也进行了更新,其中charset和defaultCharset属性就是HTML5中新添加的字符集属性.有关charset和defaultCharset属性的具体讲解尽在HTML5 ...
- HTML5实战与剖析之原生拖拽(四可拖动dragable属性和其他成员)
可拖动dragable属性 之前我们已经为大家介绍过几篇有关HTML5中原生拖拽的相关知识了.今天为大家介绍HTML5拖拽中的其他一些小东东,闲话不多说赶快一起看看吧. 在默认情况下,链接.文本和图像 ...
- HTML5实战与剖析之触摸事件(touchstart、touchmove和touchend)(转)
HTML5中新添加了很多事件,但是由于他们的兼容问题不是很理想,应用实战性不是太强,所以在这里基本省略,咱们只分享应用广泛兼容不错的事件,日后随着兼容情况提升以后再陆续添加分享.今天为大家介绍的事件主 ...
- (转)HTML5实战与剖析之触摸事件(touchstart、touchmove和touchend)
HTML5中新添加了很多事件,但是由于他们的兼容问题不是很理想,应用实战性不是太强,所以在这里基本省略,咱们只分享应用广泛兼容不错的事件,日后随着兼容情况提升以后再陆续添加分享.今天为大家介绍的事件主 ...
- HTML5实战与剖析之媒体元素(3、媒体元素的事件及方法)
HTML5中的媒体元素除了拥有非常多的属性之外,video标签和audio标签还能够出发非常多事件和方法. 这些方法监控着不同的属性的变化,这些变化有可能是媒体播放的结果,也可能是用户操作媒体的结果. ...
- HTML5实战与剖析之媒体元素
随着HTML5的到来,flash在手机端全部不能得到支持,这就使一项以flash制作的音乐播放和视频播放只能用HTML5中的媒体标签video标签和audio标签来制作了.很恰巧的是,移动端对HTML ...
- HTML5实战与剖析之原生拖拽(一拖拽历史概述)
提起拖拽,我就想起了在JavaScript培训的时候一个非常好玩的效果,那就是拖拽了.可以用鼠标任意拖拽着一个物体到任何你想去的地方. 最早拥有JavaScript拖拽功能的是IE4浏览器.当时,网页 ...
- HTML5实战与剖析之跨文档消息传递(iframe传递信息)
在来自不同域名的页面间传递消息一般统称为跨文档消息传送,简称XDM.如,www.leemagnum.com域中的页面与位于一个内嵌框架中的http://blog.csdn.net/lee_magnum ...
- HTML5实战与剖析之媒体元素(6、视频实例)
HTML5中的视频标签和及其模仿视频播放器的效果在一些手机端应用比較多.由于手机端基本上废除了flash的独断.让HTML5当家做主人,所以对视频支持的比較好. 所以今天专门为大家奉上HTML5视频标 ...
随机推荐
- .net项目中上传大图片失败
.net项目中有时用户提出要上传大图片,一张图片有可能十几兆,本来用的第三方的上传控件,有限制图片上传大小的设置,以前设置的是2M.按照用户的要求,以为直接将限制图片上传大小的设置改下就可以了,但是当 ...
- strcpy与memcpy的区别
strcpy和memcpy的区别 strcpy和memcpy都是标准C库函数,它们有下面的特点. strcpy提供了字符串的复制.即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制 ...
- LAMP的安装
一,LAMP的安装流程:mysql.apache.php或者apache.mysql.php.php放到最后的原因是,php在编译安装的时候是依赖于前2者的. 二,Mysql的安装: 1.下载mysq ...
- Hortonworks 用于做 Sentimental Analysis的Hiveddl.sql 文件
The hiveddl.sql script has performed the following steps to refine the data: Converted the raw Twitt ...
- iOS开发面试题整理 (三)
1. 风格纠错题 修改完的代码: typedef NS_ENUM(NSInteger, CYLSex) { CYLSexMan, CYLSexWoman }; @interface CYLUser : ...
- c#&.NET3.0高级程序设计-02 Enum Demo
Enum 实例 using System; using System.Collections.Generic; public class MyClass { enum EmpType ...
- CodeForces 698A - Vacations (Codeforces Round #363 (Div. 2))
要么去体育馆,要么去比赛,要么闲在家里 给出每一天体育馆和比赛的有无情况,要求连续两天不能去同一个地方 问最少闲几天 DP方程很容易看出 dp(第i天能去的地方) = min(dp(第i-1天的三种情 ...
- Unique Binary Search Trees,Unique Binary Search Trees II
Unique Binary Search Trees Total Accepted: 69271 Total Submissions: 191174 Difficulty: Medium Given ...
- linux学习笔记之文件类型,及目录介绍
引用A:http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/20/3033131.html 引用B:http://www.cnblogs.c ...
- 从汇编看c++内联函数评估求值
在c++中,一个inline函数实体,在整个class 声明未被完全看到之前,是不会被评估求值的,也就是说,对于类里面内联的成员函数本身的分析,要等到class的声明完全结束之后才开始.下面试c++源 ...