Javascript 从数组中获取包含文本的元素

Javascript 从数组中获取包含文本的元素,javascript,jquery,html,arrays,contains,Javascript,Jquery,Html,Arrays,Contains,我想搜索数组中包含任何字符串的所有元素。 例如 我有下列物品清单 <ul> <li>cricket bat</li> <li>tennis ball</li> <li>golf ball</li> <li>hockey stick</li> </ul> 它应该选择所有具有文本bat和ball的元素。如何使用jquery或javascript实现

我想搜索数组中包含任何字符串的所有元素。 例如 我有下列物品清单

<ul>
    <li>cricket bat</li>
    <li>tennis ball</li>
    <li>golf ball</li>
    <li>hockey stick</li>
</ul>
它应该选择所有具有文本bat和ball的元素。如何使用jquery或javascript实现这一点

这就是我想要的

filter = 'bat ball';
var lis = row('UL li');
var flag = 0;
for (var i = 0; i < lis.length; i++) {
    var name = lis[i].getElementsByTagName('a')[0].innerHTML;
    if (name.toUpperCase().indexOf(filter) > -1) {
        flag = 1;
    } else {
        lis[i].style.display = 'none';
    }
}
filter='batball';
var lis=世界其他地区(“UL li”);
var标志=0;
对于(变量i=0;i-1){
flag=1;
}否则{
lis[i].style.display='none';
}
}
您可以使用伪选择器:

选择包含指定文本的所有元素

您可以使用

在这种情况下,我想你指的是这些价值观中的任何一种

var-arr=['bat','ball'];
var选择器=arr.map(函数(val){
return':包含(“+val+”)'
});
var$lis=$('ulli').filter(selectors.join());
$lis.css('color','red')

  • 板球棒
  • 网球
  • 高尔夫球
  • 曲棍球棒

尝试使用
.filter()
.match()

var arr=[“球拍”、“球”];
var res=Array.prototype.filter.call(document.querySelectorAll(“li”)
,函数(el,索引){
返回el.textContent.match(新的RegExp(arr.join(“|”))!==null
});
控制台日志(res)
  • 板球棒
  • 网球
  • 高尔夫球
  • 曲棍球棒
试试这个:

$.each(["bat", "ball"], function (i,val) {
    if ($("ul li:contains(" + val + ")").length) {
        $("ul li:contains(" + val + ")").css('color', 'red')
    }
})

数组的值可以更改,它可以是100个字到1个字。我该如何使用它?@Twix将数组中的每个元素添加为
,如上图所示分隔开来。也许其中有一些元素?我可以只获取那些以任何顺序包含数组中所有字符串的列表项吗?例如'bat ball'或'ball bat'或'hockey bat and cricket ball'@Twix
var$lis=$('ul li').filter(selectors.join('')
$('li:contains("bat"), li:contains("ball")')
$.each(["bat", "ball"], function (i,val) {
    if ($("ul li:contains(" + val + ")").length) {
        $("ul li:contains(" + val + ")").css('color', 'red')
    }
})