2015-05-05 7 views
1

Я простой div с различными attributs класса:Как заменить часть className на JavaScript Regex?

<div id="divId" class="anInformationIWantToGet aClassUsedForCss"></div> 

Я хочу, чтобы программно получить anInformationIWantToGet класс, изменять, эта проблема должна быть легко, потому что другие классы известны, поэтому Regex как следующий должен сделать работа:

var anInformationIWantToGet = div.className.replace(/(\s*(aClassUsedForCss)?\s*)/, ''); 

Но это не работает, и я не понимаю, почему ... Что я пропустил?

Я создаю Fiddle, чтобы проверить проблему.

PS: мой браузер Firefox17.

+6

Firefox 17 является древним. Вы должны обновить как можно скорее. – Quentin

+0

Почему бы не использовать [classList] (https://developer.mozilla.org/en-US/docs/Web/API/Element/classList)? – CodingIntrigue

+0

@Quentin Я полностью согласен, но это не в моих руках, к сожалению ... – Fractaliste

ответ

1

Попробуйте этот изменить вас ниже код

var anInformationIWantToGet = div.className.replace(/(\s*(aClassUsedForCss)?\s*)/, ''); 

Для

var anInformationIWantToGet = div.className.replace(/(\s*(aClassUsedForCss)?\s*)/g, ''); 

пут г в регулярном выражении.

И РАБОЧИЕ обновленный fiddle

Попросите больше, если выше не работает/Понял.

0
/(\s*(aClassUsedForCss)?\s*)/ 
        ^

Вы сделали имя класса, который вы ищете по желанию, так что первый матч будет 0 или более белое пространство в начале строки.

Удалите ? и/или сделайте это глобальным регулярным выражением (добавив g).

0

Это будет работать

FiddleChanged

function replaceClass(){ 
    /* Should not output 'hover' */ 
    var reqdClasName = div.className.match(/(\S*)\s*hover\s*/)[1]; 
    div.className.replace(reqdClasName, ''); 
    result.innerHTML = reqdClasName; 
} 

К сожалению, я пропустил заменяющую часть. Я ве обновил

UpdatedFiddle

0

Мы также изменим его, просто добавив класс, который мы требуем, и удалим оставшиеся таким образом.

$("#myDiv").attr("class","aClassUsedForCss"); 

FIDDLE DEMO

Смежные вопросы