如果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

如果DOM元素包含类,如何签入JavaScript

我尝试了以下代码,但由于某些原因,它不起作用

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;
}