简体   繁体   English

如何忽略document.querySelectorAll(); 区分大小写

[英]How to ignore document.querySelectorAll(); case sensitive

I"m trying to extract all class names where the class names begin with "userName_XXX" 我正在尝试提取所有以“ userName_XXX”开头的类名

Currently I have a code that goes a bit like this. 目前,我的代码有点像这样。

var list = document.querySelectorAll("div[class^=userName_]");
var classArr = Array.prototype.map.call(list, function(div) {
    return div.className;
});

Where the returned arr holds all user classes. 返回的arr包含所有用户类。 My issue is that there are some cases where the classes do not follow the exact case. 我的问题是,在某些情况下,类没有遵循确切的情况。

So I'll come across a class like this "username_XXX" and it won't pick that up because its case sensitive. 因此,我将遇到一个类似“ username_XXX”的类,由于它区分大小写,因此无法使用。 Can anyone help me out here or point me in the right direction? 任何人都可以在这里帮助我或为我指明正确的方向吗?

EDIT: Tried following this. 编辑:尝试以下。 Still now luck. 现在还是运气。 http://jsperf.com/case-insensitive-queryselectorall/2 http://jsperf.com/case-insensitive-queryselectorall/2

Try this: 尝试这个:

 var classes = [], els = document.querySelectorAll("div[class*=userName_], div[class*=username_]"); for(var i=0; i<els.length; ++i) { var match = els[i].className.match(/(?:^|\\s)(userName_\\S{3})(?:$|\\s)/i); if(match) classes.push(match[1]); } console.log(classes); 
 <div class="userName_123">Produces "userName_123"</div> <div class="userName_1234">Produces nothing</div> <div class="username_abc">Produces "username_abc"</div> <div class="foo userName_abc bar">Produces "userName_abc"</div> 

Taken from here: Ignoring case sensitiveness in querySelectorAll 从此处获取: 忽略querySelectorAll中的区分大小写

At least Chrome and Firefox support the case-insensitivity qualifier i in an selector (as defined in here: https://drafts.csswg.org/selectors-4/#overview ) 至少Chrome和Firefox在选择器中支持不区分大小写的限定词i (如此处定义: https : //drafts.c​​sswg.org/selectors-4/#overview

 var divs = document.querySelectorAll('div[class^="foo" i]'); console.log(divs.length); // should be 3 :) 
 <div class="foobar">foobar</div> <div class="Foobar">Foobar</div> <div class="fOobar">fOobar</div> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM