我有一个购物车,在下拉菜单中显示产品选项,如果他们选择“是”,我想让页面上的其他字段可见。
问题是购物车还包含文本中的价格修饰符,每个产品的价格修饰符可能不同。以下代码有效:
$(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();
}
});
});
如果所选选项包含单词“是”,我只想执行操作,并忽略价格修饰符。
答案 0 :(得分:2006)
像这样:
if (str.indexOf("Yes") >= 0)
...或者您可以使用代字号运算符:
if (~str.indexOf("Yes"))
这是有效的,因为如果根本找不到字符串,indexOf()
会返回-1
。
请注意,这是区分大小写的 如果您想要不区分大小写的搜索,可以编写
if (str.toLowerCase().indexOf("yes") >= 0)
或者,
if (/yes/i.test(str))
答案 1 :(得分:115)
答案 2 :(得分:25)
另一种方式:
var testStr = "This is a test";
if(testStr.contains("test")){
alert("String Found");
}
**在Firefox,Safari 6和Chrome 36 **上测试
答案 3 :(得分:24)
写这个答案已经很晚了,但无论如何我想要把它包括在内。 String.prototype
现在有一个方法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
}
查看documentation了解详情。
答案 4 :(得分:11)
ECMAScript 6引入了String.prototype.includes
,之前命名为contains
。
可以像这样使用:
'foobar'.includes('foo'); // true
'foobar'.includes('baz'); // false
它还接受一个可选的第二个参数,它指定开始搜索的位置:
'foobar'.includes('foo', 1); // false
'foobar'.includes('bar', 1); // true
可以polyfilled使其适用于旧浏览器。
答案 5 :(得分:7)
您可以在ie和chrome中使用此Polyfill
if (!('contains' in String.prototype)) {
String.prototype.contains = function (str, startIndex) {
"use strict";
return -1 !== String.prototype.indexOf.call(this, str, startIndex);
};
}
答案 6 :(得分:7)
返回关键字包含在字符串中的次数。
var count = "I have one keyword".match(/keyword/g);
var clean_count = !count ? false : count.length;
答案 7 :(得分:4)
includes()方法确定是否可以在另一个字符串中找到一个字符串,并在适当时返回true或false。
语法:-string.includes(searchString [,position])
searchString: - 要在此字符串中搜索的字符串。
位置: - 可选。此字符串中开始搜索searchString的位置;默认为0.
string = 'LOL';
console.log(string.includes('lol')); // returns false
console.log(string.includes('LOL')); // returns true
答案 8 :(得分:2)
我知道最好的方法是str.indexOf(s) !== -1;
http://hayageek.com/javascript-string-contains/
我建议采用另一种方式(str.replace(s1, "") !== str
):
var str = "Hello World!", s1 = "ello", s2 = "elloo";
alert(str.replace(s1, "") !== str);
alert(str.replace(s2, "") !== str);

答案 9 :(得分:2)
如果您能够使用库,您可能会发现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");
..无论你喜欢哪一个。
答案 10 :(得分:1)
您还可以检查字符串中是否包含确切的单词。 E.g:
function containsWord(haystack, needle) {
return (" " + haystack + " ").indexOf(" " + needle + " ") !== -1;
}
用法:
containsWord("red green blue", "red"); // true
containsWord("red green blue", "green"); // true
containsWord("red green blue", "blue"); // true
containsWord("red green blue", "yellow"); // false
这就是jQuery如何使用hasClass方法。
答案 11 :(得分:0)
以上都没有为我工作,因为有空格但这就是我做的
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";
}
}
}
答案 12 :(得分:-1)
您可以定义扩展方法并稍后使用。
String.prototype.contains = function(it)
{
return this.indexOf(it) != -1;
};
这样您就可以在页面中使用:
var str="hello how are you";
str.contains("are");
返回 true 。
有关更多扩展帮助方法,请参阅以下帖子。 Javascript helper methods