如何忽略document.querySelectorAll();区分大小写 [英] How to ignore document.querySelectorAll(); case sensitive

查看:346
本文介绍了如何忽略document.querySelectorAll();区分大小写的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图提取所有类名以userName_XXX开头的类名



目前我有一个类似这样的代码。 p>

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

返回的arr保存所有的用户类。我的问题是有些情况下类不遵循确切的情况。



我会遇到像username_XXX这样的课程,它不会选择它,因为它的大小写敏感。任何人都可以帮我在这里或指向正确的方向吗?



编辑:尝试下面这个。现在仍然是运气。
http:// jsperf .com / case-insensitive-queryselectorall / 2

解决方案

试试这个:

  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>生成userName_123< / div>< div class =userName_1234>生成nothing< / div>< div class = username_abc>产生username_abc< / div>< div class =foo userName_abc bar>产生userName_abc< / div>  


I"m trying to extract all class names where the class names begin with "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. 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. 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

解决方案

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>

这篇关于如何忽略document.querySelectorAll();区分大小写的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆