我使用
在jQuery中使用了成功的关键字参数var text = $("#pbtitle").text();
options.forEach( function( element ) {
if ( text.indexOf( element ) != -1 ) { // if its NOT -1 (-1 = not found)
$('.install_option').css('display','block'); // then we found it .. do your magic
}
});
但是,我知道希望合并一些否定/排除关键字。但努力让它充分发挥作用:
<h1 id="pbtitle"><?php echo $heading_title; ?></h1>
<div class="install_option" style="display:none; margin-bottom: 25px; overflow:hidden; box-sizing:border-box;">
<p>Take upgrade option</p>
</div>
var options = ['Adult Membership','Jnr Membership','Family Ticket'];
var exclusions = ['2016','Expired,'Void'];
var text = $("#pbtitle").text();
options.forEach( function( element ) {
if ( text.indexOf( element ) != -1 ) // if its NOT -1 (-1 = not found)
&&
exclusions.forEach( function( elements ) {
if ( text.indexOf( elements ) == 1 ) { // if its NOT -1 (-1 = not found)
$('.install_option').css('display','block'); // then we found it .. do your magic
}
else
{
$('.install_option').css('display','none');
}
});
“因此,如果选项关键字 匹配并且排除关键字不存在。显示'安装选项'div。如果不匹配,请保持div隐藏”
示例结果
答案 0 :(得分:1)
您尝试以奇怪的方式使用&&
。它应该如下工作:
expression1 && expression2 && ... && expreesionN
每个表达式都计算为true
或false
,因为JS中的所有值都是布尔值或类似布尔值(也就是说,转换时它们变为true
或{{1 }})。
在你的情况下发生的是:
false
但是if ( text.indexOf( element ) != -1 ) // if its NOT -1 (-1 = not found)
&&
exclusions.forEach( function( elements ) {
会返回什么?
除此之外,我建议声明两个变量,指示文本中是否找到任何关键词,文本中是否有任何exlucsion词,然后检查你想要的任何内容:
exclusions.forEach
通过这种方式,您可以检查这两个条件并明确检查它们,而不是将所有内容都转换为makaronee代码。变量名非常清楚,易于在布尔表达式中使用
答案 1 :(得分:0)
查看Arrays提供的其他功能。在这种情况下,forEach
找不到您要找的内容:
尤其是你不想改变循环中的display
值,因为它的性能很差,最终结果只取决于最后一次迭代。
var options = ['Adult Membership','Jnr Membership','Family Ticket'];
var exclusions = ['2016','Expired','Void'];
var text = $("#pbtitle").text();
var inText = word => text.includes(word);
$('.install_option').css('display', options.some(inText) && !exclusions.some(inText)? 'block': 'none');