ドロップダウンメニューに製品オプションを表示するショッピングカートがあります。それらが[はい]を選択した場合は、ページ上の他のフィールドを表示するようにします。
問題は、ショッピングカートのテキストに価格修飾子も含まれていることです。これは商品ごとに異なる可能性があります。次のコードは機能します。
$(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();
}
});
});
選択したオプションに「はい」という単語が含まれていて、価格修飾子を無視する場合にのみアクションを実行します。
このような:
if (str.indexOf("Yes") >= 0)
...または、チルダ演算子を使用できます。
if (~str.indexOf("Yes"))
文字列がまったく見つからなかった場合、indexOf()
は-1
を返すので、これはうまくいきます。
これは大文字と小文字を区別することに注意してください。
大文字と小文字を区別しないで検索したい場合は、次のように書くことができます。
if (str.toLowerCase().indexOf("yes") >= 0)
または、
if (/yes/i.test(str))
別の方法:
var testStr = "This is a test";
if(testStr.contains("test")){
alert("String Found");
}
** Firefox、Safari 6、およびChrome 36でテスト済み**
この回答を書くのはかなり遅れていますが、とにかく含めることを考えました。 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
}
詳細については ドキュメント をチェックしてください。
ECMAScript 6では、以前はcontains
と呼ばれていた String.prototype.includes
が導入されました。
それはこのように使用することができます:
'foobar'.includes('foo'); // true
'foobar'.includes('baz'); // false
また、検索を開始する位置を指定するオプションの2番目の引数も受け入れます。
'foobar'.includes('foo', 1); // false
'foobar'.includes('bar', 1); // true
polyfilled は古いブラウザで動くようにすることができます。
あなたは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);
};
}
キーワードが文字列に含まれる回数を返します。
var count = "I have one keyword".match(/keyword/g);
var clean_count = !count ? false : count.length;
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
最善の方法は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);
あなたがライブラリを使うことができるならば、あなたは 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");
..どちらが好きです。
正確なWordが文字列に含まれているかどうかも確認できます。例えば。:
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メソッドを実行する方法です。
空白のスペースがあったので上記のどれも私のために働きませんでしたが、これは私がしたことです
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";
}
}
}