如果DOM元素包含类,我如何检入JavaScript?
我尝试了以下代码,但由于某种原因它不起作用......
if (document.getElementById('element').class == "class_one") {
//code...
}
Run Code Online (Sandbox Code Playgroud)
Gre*_*reg 36
要获取类属性的全部值,请使用 .className
className获取并设置指定元素的class属性的值.
很多年前,当这个问题第一次被回答时,它.className是纯JavaScript中唯一真正的解决方案.自2013年起,所有浏览器都支持 .classList界面.
JavaScript的:
if(document.getElementById('element').classList.contains("class_one")) {
//code...
}
Run Code Online (Sandbox Code Playgroud)
你也可以做有趣的事情有classList,像.toggle(),.add()和.remove().
向后兼容的代码:
if(document.getElementById('element').className.split(" ").indexOf("class_one") >= 0) {
//code...
}
Run Code Online (Sandbox Code Playgroud)
Tim*_*own 16
你需要的财产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
}
Run Code Online (Sandbox Code Playgroud)
UPDATE
现代浏览器(除了IE <= 9之外几乎所有主要内容)都支持classList属性,如@ Dropped.on.Caprica的回答中所述.因此,在可用的情况下使用它是有意义的.下面是一些示例代码,用于检测classList浏览器是否支持并返回基于正则表达式的代码:
var hasClass = (typeof document.documentElement.classList == "undefined") ?
function(el, clss) {
return el.className && new RegExp("(^|\\s)" +
clss + "(\\s|$)").test(el.className);
} :
function(el, clss) {
return el.classList.contains(clss);
};
Run Code Online (Sandbox Code Playgroud)
所有现代浏览器都支持contains以下方法Element.classList:
testElement.classList.contains(className)
Run Code Online (Sandbox Code Playgroud)
testElement.classList.contains(className)
Run Code Online (Sandbox Code Playgroud)
var testElement = document.getElementById('test');
document.body.innerHTML = '<pre>' + JSON.stringify({
'main' : testElement.classList.contains('main'),
'cont' : testElement.classList.contains('cont'),
'content' : testElement.classList.contains('content'),
'main-cont' : testElement.classList.contains('main-cont'),
'main-content' : testElement.classList.contains('main-content')
}, null, 2) + '</pre>';Run Code Online (Sandbox Code Playgroud)
(来自CanIUse.com)
如果您想使用Element.classList并且还想支持像 IE8 这样的古老浏览器,请考虑使用Eli Gray的这个 polyfill。
这是.className属性,像这样:
if (document.getElementById('element').className == "class_one") {
//code...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41508 次 |
| 最近记录: |