我有一个购物车,在下拉菜单中显示产品选项,如果他们选择“是”,我想使页面上的一些其他字段可见。

问题是购物车还在文本中包含价格修饰符,每个产品的价格修饰符可能不同。下面的代码工作:

$(document).ready(function() {
    $('select[id="Engraving"]').change(function() {
        var str = $('select[id="Engraving"] option:selected').text();
        if (str == "Yes (+ $6.95)") {
            $('.engraving').show();
        } else {
            $('.engraving').hide();
        }
    });
});

然而,我宁愿使用这样的东西,这是行不通的:

$(document).ready(function() {
    $('select[id="Engraving"]').change(function() {
        var str = $('select[id="Engraving"] option:selected').text();
        if (str *= "Yes") {
            $('.engraving').show();
        } else {
            $('.engraving').hide();
        }
    });
});

我只想在所选选项包含单词“Yes”时执行该操作,并忽略价格修饰符。


当前回答

如果你能使用库,你会发现Lo-Dash JS库是非常有用的。在这种情况下,继续检查_.contains()(从v4开始被_.includes()取代)。

(注意Lo-Dash约定将库对象命名为_。 不要忘记在同一页面中检查安装,为您的项目设置它。)

_.contains("foo", "oo");     // → true
_.contains("foo", "bar");    // → false
// Equivalent with:
_("foo").contains("oo");     // → true
_("foo").contains("bar");    // → false

在你的情况下,继续使用:

_.contains(str, "Yes");
// or:
_(str).contains("Yes");

..你更喜欢哪一个。

其他回答

您可以定义一个扩展方法并在以后使用它。

String.prototype.contains = function(it) 
{ 
   return this.indexOf(it) != -1; 
};

这样你就可以在页面的任何地方使用:

var str="hello how are you";
str.contains("are");

返回true。

有关更多扩展助手方法,请参阅下面的帖子。 Javascript帮助方法

现在写这个答案有点晚了,但我还是想把它写进去。字符串。原型现在有一个方法includes,可以检查子字符串。该方法区分大小写。

var str = 'It was a good date';
console.log(str.includes('good')); // shows true
console.log(str.includes('Good')); // shows false

要检查子字符串,可以采用以下方法:

if (mainString.toLowerCase().includes(substringToCheck.toLowerCase())) {
    // mainString contains substringToCheck
}

查看文档了解更多信息。

你可以使用搜索或匹配。

str.search('Yes')

将返回匹配的位置,如果没有找到则返回-1。

我知道最好的方法是str.indexOf(s) !== -1;http://hayageek.com/javascript-string-contains/

我建议另一种方法(str。Replace (s1, "") !== str):

var str =“你好,世界!”s1 =“ello”,s2 =“elloo”; 警报(str。代表(s1, "") !== str; 警报(str。代表(s2,“”)!

上面这些方法对我都不起作用,因为有空白,但这就是我所做的

tr = table.getElementsByTagName("tr");

    for (i = 0; i < tr.length; i++) {
        td = tr[i].getElementsByTagName("td")[0];
        bottab.style.display="none";
        bottab2.style.display="none";
        if (td) {
        var getvar=td.outerText.replace(/\s+/, "") ;

            if (getvar==filter){
                tr[i].style.display = "";
            }else{
                tr[i].style.display = "none";
            }

        }
    }