我需要你的帮助。
使用纯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">
答案 0 :(得分:1)
<input type="text" id="test" class="classA classB" />
var classArray = document.getElementById('test').classList;
答案 1 :(得分:1)
您只能使用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">
答案 2 :(得分:1)
你的问题(或者说你的头衔)有点不清楚。我猜你的问题是,如果一个元素有多个类,但是一个元素是否有2个特定的类分配给它(ClassA
和{{1} }):
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);
}
答案 3 :(得分:0)
纯JavaScript:
// Consecutive spaces in the class attribute will cause this to return the wrong number
document.getElementById("test").className.split(" ").length
在上面的代码中,您需要循环遍历split方法的结果,并在获取数组长度之前删除空数组条目。
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);
}
答案 4 :(得分:0)
试试这个,这里有一个例子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)
}
答案 5 :(得分:0)
首先,获取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);
}