переменная indexOf в данном конкретном случае - PullRequest
0 голосов
/ 04 января 2012

Я хочу проверить, есть ли у mydiv класс или нет , если его нет, добавьте все, что есть внутри var newClass,Я пытаюсь сделать это так, но это не работает:

var newClass="classToBeAdded";

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

Ответы [ 3 ]

2 голосов
/ 04 января 2012

Используйте это:

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, чтобы мы соответствовали целевому классу noнезависимо от того, где оно появляется в строке.

Некоторые тесты

Предполагают следующую функцию:

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
1 голос
/ 04 января 2012

Вы можете использовать свойство javascript элемента dom

document.getElementById("mydiv").classList

, оно возвращает массив присвоенных имен классов

0 голосов
/ 04 января 2012

Вам, вероятно, следует использовать библиотеку, чтобы абстрагировать вас от подобных проблем.

Эмпирическое правило заключается в том, что вы должны сосредоточиться на проблемах, специфичных для вашей области, а не изобретать колесо.

jQuery .hassClass - хороший кандидат

...