Javascript 函数来检查元素是否有任何这些带有本机JS的类
寻找一个简单、轻量级的函数来检查一个函数是否有任何列出的类而没有jQuery或其他库 这样的函数很容易实现,但是应该有一个规范的、最快的和最简单的答案,人们可以直接复制粘贴 这看起来有点像吸血鬼,但我这么问是为了让谷歌不用自己写 不重复-链接问题检查一个类,此问题要求检查任何类Javascript 函数来检查元素是否有任何这些带有本机JS的类,javascript,html,dom,Javascript,Html,Dom,寻找一个简单、轻量级的函数来检查一个函数是否有任何列出的类而没有jQuery或其他库 这样的函数很容易实现,但是应该有一个规范的、最快的和最简单的答案,人们可以直接复制粘贴 这看起来有点像吸血鬼,但我这么问是为了让谷歌不用自己写 不重复-链接问题检查一个类,此问题要求检查任何类 function hasAnyOfTheseClasses(elem, tofind) { classes = elem.className.split(' '); for(var x in tofind
function hasAnyOfTheseClasses(elem, tofind) {
classes = elem.className.split(' ');
for(var x in tofind) {
var className = tofind[x];
if (classes.indexOf(className) == -1){
return false;
}
}
return true;
}
以下是我的实现:
<div id="test" class="a1 a2 a5"></div>
var element = document.getElementById("test")
if (hasAnyOfTheseClasses(element, ["a1", "a6"])) {
//...
}
它既不优雅也不快速。不过还是管用的。请随意编辑以进行改进。您可以使用正则表达式,不确定它是否纯粹更好,但至少更灵活,因为您当前的测试太依赖于正确输入空格
function hasAnyOfTheseClasses(element, classes) {
for (var i = 0; i < classes.length; i++) {
if ((' ' + element.className + ' ').indexOf(' ' + classes[i] + ' ') > -1) {
return true;
}
}
return false;
}
只需创建一个循环,检查数组中的每个值是否是传递的元素中的类
function hasAnyOfTheseClasses(element, classes) {
var className = element.className;
for (var i = 0; i < classes.length; i++) {
var exp = new RegExp('\b'+classes[i] + '\b');
if(exp.test(className)) return true;
}
return false;
}
使用属性获取元素的类列表。然后可以使用.contains方法测试每个类
function hasAnyOfTheseClasses(elem, tofind) {
classes = elem.className.split(' ');
for(var x in tofind) {
var className = tofind[x];
if (classes.indexOf(className) == -1){
return false;
}
}
return true;
}
下面是一个使用和的功能实现 函数hasAnyClasselement,类{ 返回类.somefunctionc{ 返回元素.classList.containsc; }; } var div=document.getElementByIdtest; console.loghasAnyClassdiv[hi,xyz]; console.loghasAnyClassdiv,[xyz,there]; console.loghasAnyClassdiv[xyz,xyz]; 使用和:
谁不希望它能够复制粘贴这种代码呢?对于有基本技能的人来说应该不会太难。你自己试过什么吗?@AlexanderO'Mara是的。它起作用了。我正在寻找一个规范的答案,这样谷歌人就不必再经历这个过程了。我的impl可能不利于性能或优雅。如果您希望发布一个规范问题,请将您的解决方案作为答案发布。不要躲在它后面作为让人们为你写代码的借口。不确定添加一个循环是否需要它自己的问答。基本上是重复的。短版本将是['foo','bar']。。。在……我的也是。这一个有一个bug。太依赖于正确输入空格了,我不这么认为。这怎么会是个问题?这也是jQuery使用的实现。顺便说一句,被Felix的答案欺骗了。哦,天哪,这个答案已经流行了3次了
function hasAnyClass(el, classes) {
var elClasses = el.className.split(' ');
return classes.some(c => elClasses.indexOf(c) >= 0)
}