当DOM准备就绪时,我想检查页面上的元素是否包含三个字符串中的一个。目前,我这样做,但这没有按预期工作,因为indexOf通常与数组结合使用:
jQuery('li.woocommerce-order-overview__payment-method.method')[0].innerHTML.indexOf('iDEAL' || 'Sofortbanking' || 'Bancontact / MisterCash') > 1
如何以最有效的方式重写此元素以检查元素是否包含三个字符串之一?
答案 0 :(得分:0)
var html = ...
var match = new Array('iDEAL' , 'Sofortbanking' , 'Bancontact / MisterCash');
var found = false;
for(var i=0;i<3;++i){
if(html.indexOf(match[i])!=-1){
found = true;
}
}
//use `found`
答案 1 :(得分:0)
这是我的尝试。
var html, salient;
html = $("li.woocommerce-order-overview__payment-method.method").html();
salient = [ "iDEAL", "Sofortbanking", "Bancontact / MisterCash" ];
for (i = 0; i < salient.length; i++)
{
if (html.indexOf(salient[i]) !== -1)
{
// it contains string i
}
}
或者,如果您想使用RegEx,这不一定更好:
var html;
html = $("li.woocommerce-order-overview__payment-method.method").html();
if (html.match(/(?:iDEAL|Sofortbanking|Bancontact.*MisterCash)/))
{
// it contains one of those strings
}
答案 2 :(得分:0)
如果您想获得现有的Stein,请使用match
功能。
如果您只想检查它是否存在,请使用JavaScript中的test
/(iDEAL|Sofortbanking|Bancontact|MisterCash){1,}/.test(
jQuery('li.woocommerce-order-overview__payment-method.method')[0].innerHTML);
正则表达式
/(iDEAL|Sofortbanking|Bancontact|MisterCash){1,}/
将匹配一个或多个出现的单词
答案 3 :(得分:0)
你可以使用一组针,然后Array.some
来检查该元素是否包含任何一个
let needles = ['iDEAL', 'Sofortbanking', 'Bancontact', 'Bancontact / MisterCash'];
let haystack = $('li.woocommerce-order-overview__payment-method.method').html();
let result = needles.some( needle => haystack.includes( needle ) );
答案 4 :(得分:-1)
|| (或操作员)不这样做, 我建议使用||在indexOf()之外 像这样
indexOf('iDEAL') > 1 || indexOf('Sofortbanking') > 1 || indexOf('...')>1
Have a Look at a similar answer here