我有一个简单的div
,其中包含各种类的属性:
<div id="divId" class="anInformationIWantToGet aClassUsedForCss"></div>
我想以编程方式获取变化的anInformationIWantToGet
类,问题应该很容易,因为其他类是已知的,所以像下面这样的正则表达式应该可以完成这项工作:
var anInformationIWantToGet = div.className.replace(/(\s*(aClassUsedForCss)?\s*)/, '');
但它不起作用,我不明白为什么......我错过了什么?
我创建了一个Fiddle来测试问题。
PS:我的浏览器是Firefox17。
答案 0 :(得分:1)
试试这个 在代码下面改变你
var anInformationIWantToGet = div.className.replace(/(\s*(aClassUsedForCss)?\s*)/, '');
要
var anInformationIWantToGet = div.className.replace(/(\s*(aClassUsedForCss)?\s*)/g, '');
把g放在正则表达式中。
正在更新fiddle
要求更多,如果以上不工作/理解。
答案 1 :(得分:0)
/(\s*(aClassUsedForCss)?\s*)/
^
您已经创建了可选的类名,因此第一个匹配将是字符串开头的0或更多空格。
删除?
和/或将其设为全局正则表达式(通过附加g
)。
答案 2 :(得分:0)
这将有效
function replaceClass(){
/* Should not output 'hover' */
var reqdClasName = div.className.match(/(\S*)\s*hover\s*/)[1];
div.className.replace(reqdClasName, '');
result.innerHTML = reqdClasName;
}
哎呀我错过了替换部分。我已经更新了
答案 3 :(得分:0)
请注意更换空白区域。试试this example。
var anInformationIWantToGet = div.className.replace(/(\s*(?:aClassUsedForCss)\s*)/, ' ').trim();
答案 4 :(得分:0)