检查以查明元素是否包含 1 个以上的类名
Checking to find out if an element contains more than 1 classname
我需要你的帮助。
使用纯javascript而不是jQuery,你如何确定一个元素是否包含超过1个类名。
即。
if (#test has the classname = "classA and classB" then { alert(true) }
else { alert(false) }
.HTML:
<input type="text" id="test" "class="classA classB">
你的问题(或者更确切地说是你的标题)有点不清楚。我猜你问的不是元素是否有多个类,而是元素是否分配了 2 个特定的类(ClassA
和 ClassB
):
var classNames = document.getElementById("test").className.split(" ");
if (classNames.indexOf("ClassA") >= 0 && classNames.indexOf("ClassB") >= 0) {
// test has both class A and class B
alert(true);
} else {
alert(false);
}
<div id="test" class="ClassA ClassB"></div>
你可以只使用split
:
var classes = document.getElementById("test").className.split(' ');
请检查以下内容:
var classes = document.getElementById("test").className.split(' ');
alert(classes);
<input type="text" id="test" class="classA classB">
<input type="text" id="test" class="classA classB" />
var classArray = document.getElementById('test').classList;
试试这个,这里有一个例子 fiddlejs
Array.prototype.contains = function(obj) {
var i = this.length;
while (i--) {
if (this[i] == obj) {
return true;
}
}
return false;
}
var test = document.getElementById("test").classList
if (test.contains("classA") && test.contains("classC")){
alert(true)
}
else {
alert(false)
}
纯 JavaScript:
// Consecutive spaces in the class attribute will cause this to return the wrong number
document.getElementById("test").className.split(" ").length
在上面的代码中,您希望遍历拆分方法的结果,并在获取数组长度之前删除空数组条目。
DOM API (http://caniuse.com/#feat=classlist)
document.querySelector("#test").classList.length
or
document.getElementById("test").classList.length
对于伪代码
var classList = document.querySelector("#test").classList;
if (classList.contains("classA") && classList.contains("classB")) {
alert(true);
} else {
alert(false);
}
首先,获取 class 属性:
var classAttr = document.getElementById("test").className;
将其拆分为一个数组:
var classes = classAttr.split(" +");
最后,检查两个类是否都在数组中。 使用 ECMAScript 7:
if (classes.includes("classA") && classes.includes("classB") {
alert(true);
} else {
alert(false);
}
或者使用较旧的 JS:
if ((classes.indexOf("classA") > -1) && (classes.indexOf("classB") > -1)) {
alert(true);
} else {
alert(false);
}
相关文章:
- 带有填充属性的SVG矩形显示在包含元素的上方插入框阴影
- WebGL错误-错误:WebGL:bindBuffer:buffer已包含元素数据
- 如何在 jQuery 的 hover() 事件的热点中包含元素的边距
- jQuery将事件处理程序绑定到具有包含元素的多个元素
- 如何从包含
元素的 javascript 变量中获取单元格数据 - Jquery 查找响应是否包含元素
- 如何创建包含
元素值的数组 - Javascript Garbarge 集合,其中包含包含C++元素的对象
- Javascript 过程,用于提高元素的 z 索引,直到它高于其所有包含元素的 1
- 包含元素的数组的长度 = 0
- 如果查询搜索包含元素,如何返回布尔值
- 将选中绑定与包含元素上的单击绑定相结合
- 如何使用Javascript隐藏和显示鼠标悬停在包含元素上的元素
- 我如何通过id检查我的DOM是否已经包含元素
- CSS使图像具有与包含元素相同的高度
- 在一个溢出:隐藏的包含元素上改变焦点,移动它,但造成不明显的差异
- 使用jQuery或JavaScript访问表单中的元素(或其他包含元素)
- jQuery/Javascript:由AJAX请求拉入的HTML不包含