Javascript 在这种特殊情况下,匹配变量的索引

Javascript 在这种特殊情况下,匹配变量的索引,javascript,html,class,indexof,Javascript,Html,Class,Indexof,我想检查mydiv是否有类,如果没有,则添加varnewClass中的任何内容。我正试图这样做,但不起作用: var newClass="classToBeAdded"; if(document.getElementById("mydiv").className.indexOf(/(?:^| )(newClass)(?:$| )/)==-1){ document.getElementById("mydiv").className+=" "+newClass; } 您可以使用dom元素

我想检查
mydiv
是否有类,如果没有,则添加var
newClass
中的任何内容。我正试图这样做,但不起作用:

var newClass="classToBeAdded";

if(document.getElementById("mydiv").className.indexOf(/(?:^| )(newClass)(?:$| )/)==-1){
    document.getElementById("mydiv").className+=" "+newClass;
}

您可以使用dom元素的javascript属性

document.getElementById("mydiv").classList

它返回指定类名的数组

您可以使用dom元素的javascript属性

document.getElementById("mydiv").classList
它返回指定类名的数组

使用以下命令:

var newClass = "classToBeAdded";
var d = document.getElementById("mydiv");
var r = new RegExp(" " + newClass + " ");
if (r.test(" " + d.className + " "))
    // do something here
或者,类似地:

var d = document.getElementById("mydiv");
if ((" " + d.className + " ").indexOf(" " + newClass + " ") != -1)
    // do something here
className
字符串之前和之后添加空格,这样无论目标类出现在字符串中的什么位置,我们都将匹配它

一些测试

承担以下功能:

function hasClass(str, name) {
    return (" " + str + " ").indexOf(" " + name + " ") != -1;
}
测试:

hasClass("target", "target") // true
hasClass("test target test1", "target") // true
hasClass("test1 target", "target") // true
hasClass("target test1", "target") // true
hasClass("test1", "target") // false
使用以下命令:

var newClass = "classToBeAdded";
var d = document.getElementById("mydiv");
var r = new RegExp(" " + newClass + " ");
if (r.test(" " + d.className + " "))
    // do something here
或者,类似地:

var d = document.getElementById("mydiv");
if ((" " + d.className + " ").indexOf(" " + newClass + " ") != -1)
    // do something here
className
字符串之前和之后添加空格,这样无论目标类出现在字符串中的什么位置,我们都将匹配它

一些测试

承担以下功能:

function hasClass(str, name) {
    return (" " + str + " ").indexOf(" " + name + " ") != -1;
}
测试:

hasClass("target", "target") // true
hasClass("test target test1", "target") // true
hasClass("test1 target", "target") // true
hasClass("target test1", "target") // true
hasClass("test1", "target") // false

您可能应该使用一个库来为您抽象这些问题

经验法则是,你应该专注于你特定领域的问题,而不是重新发明轮子


jQuery是一个很好的候选者

您可能应该使用一个库来为您抽象此类问题

经验法则是,你应该专注于你特定领域的问题,而不是重新发明轮子


jQuery是一个很好的候选者

它在旧版本的浏览器+1中不起作用我不知道
classList
,但它需要更新的浏览器()。这是真的,但总有办法扩展任何类型的原型来添加属性;)但是你应该使用jQuery或任何类似的工具来让你的生活更轻松它在旧版本的浏览器+1中不起作用我不知道
classList
,但它需要更新的浏览器()。这是真的,但总有办法扩展任何类型的原型来添加属性;)但是你应该使用jQuery或任何类似的工具来让你的生活更轻松。你可以查看第一个/最后一个类?@TuxedoKnightChess-是的。试试看。
“(^ |)+”+newClass+“($|)+”
会有办法(没有尝试但假设会)@TuxedoKnightChess-添加了一些测试来演示。will
“+newClass+”
检查第一个/最后一个类?@TuxedoKnightChess-是的。试试看。
“(^ |)+”+newClass+“($|)+”
会有办法(没有尝试,但假设会)@TuxedoKnightChess-添加了一些测试来演示。