如果DOM元素包含类,如何签入JavaScript?
如果DOM元素包含类,如何签入JavaScript 我尝试了以下代码,但由于某些原因,它不起作用如果DOM元素包含类,如何签入JavaScript?,javascript,dom,Javascript,Dom,如果DOM元素包含类,如何签入JavaScript 我尝试了以下代码,但由于某些原因,它不起作用 if (document.getElementById('element').class == "class_one") { //code... } 是这样的, if (document.getElementById('element').className == "class_one") { //code... } 要获取类atribute的整个值,请使用.className
if (document.getElementById('element').class == "class_one") {
//code...
}
是这样的,
if (document.getElementById('element').className == "class_one") {
//code...
}
要获取类atribute的整个值,请使用
.className
className获取并设置指定元素的class属性的值
自2013年以来,你得到了额外的帮助。
许多年前,当这个问题第一次得到回答时,.className
是纯JavaScript中唯一真正的解决方案。自2013年起,.classList
接口
JavaScript:
if(document.getElementById('element').classList.contains("class_one")) {
//code...
}
您还可以使用类列表
做一些有趣的事情,比如.toggle()
、.add()
和.remove()
向后兼容代码:
if(document.getElementById('element').className.split(" ").indexOf("class_one") >= 0) {
//code...
}
您需要的属性是
className
,而不是class
。此外,一个元素可以有许多类,因此如果您想测试它是否有特定的类,您需要执行以下操作:
function hasClass(el, clss) {
return el.className && new RegExp("(^|\\s)" +
clss + "(\\s|$)").test(el.className);
}
var element = document.getElementById('element');
if ( hasClass(element, "class_one") ) {
// Do stuff here
}
更新
现代浏览器(除了IE之外几乎所有主要的浏览器)比所有浏览器(如果您使用的是HTML5)更好的解决方案是使用classList API
var element = document.getElementById('some-element');
if (element.classList.contains('class-you-want-to-check')) {
console.log('element has target class')
} else {
element.classList.add('class-you-want-to-check');
element.classList.remove('class-you-want-to-check');
element.classList.toggle('class-you-want-to-check');
if (element.classList.contains('class-you-want-to-check')) {
console.log('Yep, classList is baller')
}
}
在元素上切换类
var el = document.getElementById('element');
el.classList[['add','remove'][+el.classList.contains('class_one')]]('class_one');
或
如果您使用的是jQuery,那么以下简单代码将有所帮助:
if ($('.yourclass').length) {
// do something
}
如果要检查页面中的两个以上的类,请使用
$(“.yourclass”)。长度>2
所有现代浏览器都支持包含方法:
演示
var testElement=document.getElementById('test');
document.body.innerHTML=''+JSON.stringify({
function hasClass(element, className) {
return (element.className).indexOf(className) > -1;
}
“main”:testElement.classList.contains('main'),
“cont”:testElement.classList.contains('cont'),
“内容”:testElement.classList.contains('content'),
“main cont”:testElement.classList.contains('main-cont'),
“主要内容”:testElement.classList.contains('main-content')
},null,2)+'';
hasClass:
function containsClass(element, className) {
return Array.from(element.classList).filter(function (cls) {
return cls.indexOf(className) > -1;
}).length > 0;
}
容器类:
。另外,如果元素有多个类怎么办?+1,即将发布类似的内容。有一件事,我想您必须在if(hasClass(…)中传递一个类名(“class_one”
是OP想要检查的类名)
example。如果您需要,这里有一些文档供您使用。@tereško-这个答案有什么不正确之处?请记住所问的问题。它假设标记只有一个类(如果您想更新它,则没有任何相关内容)。@tereško-问题是“如何检查DOM元素的类?”,而不是“如何检查DOM元素是否有类?”…这个问题在别处。@tereško-classList在IE10之前不起作用,对大多数人来说,这不是一个切实可行的选项。请参阅此处:className
始终是一个字符串,所以它不会真正起作用。当然,除非你是jslint。)2016年,我可以使用classList,awesome:)欢迎来到未来,@alweWatch on hasClass:如果一个元素有“show initial”类,并且你测试了“show”类,那么即使该元素没有该类,你也会得到正确答案。
testElement.classList.contains(className)
function hasClass(element, className) {
return (element.className).indexOf(className) > -1;
}
function containsClass(element, className) {
return Array.from(element.classList).filter(function (cls) {
return cls.indexOf(className) > -1;
}).length > 0;
}