32

javascript に含まれるプロパティが chrome ブラウザで機能しないのはなぜですか? 私はjavascriptでContains Propertyを試してみました.Mozilla Firefox Browserでうまく動作しています. しかし、Chrome ブラウザでは動作しません。これを修正するにはどうすればよいですか?

リンク: http://www.codingslover.com/2014/11/why-javascript-contains-property-is-not.html

var ClearFilterValue='family Schools';
if(ClearFilterValue.contains("family")== true) {
      alert('Success');
}
4

6 に答える 6

38

indexofは文字列の位置を返します。見つからない場合は-1 を返します:

var ClearFilterValue = 'family Schools';
alert(ClearFilterValue.indexOf("family") != -1);
于 2013-10-25T12:13:55.457 に答える
13

containsChromeではサポートされていませんが、ポリフィルを使用できます。

if (!String.prototype.contains) {
    String.prototype.contains = function(s) {
        return this.indexOf(s) > -1
    }
}
'potato'.contains('tat') // true
'potato'.contains('tot') // false
于 2013-10-25T12:14:20.600 に答える
6

実際String.containsには Chrome ではサポートされていません。MDN

問題を解決する方法は次のとおりです。

ポリフィル

このメソッドを簡単にポリフィルできます:

if (!('contains' in String.prototype)) String.prototype.contains = function (str, startIndex) {
    return -1 !== String.prototype.indexOf.call(this, str, startIndex);
};

var ClearFilterValue = 'family Schools';
if (ClearFilterValue.contains("family") == true) {
    alert('Success');
}

デモ:フィドル

于 2013-10-25T12:15:00.830 に答える
1

独自の contains メソッドを使用して、Firefox の contains() メソッドをオーバーライドします。この方法は広く使われているので -> ( indexof) という意味です。

String.prototype.contains = function(str) { return this.indexOf(str) != -1; };
于 2013-10-25T12:15:51.583 に答える
1

indexOf を使用する必要があると思います

var ClearFilterValue = 'family Schools';
if(ClearFilterValue.indexOf("family") !== -1) {
      alert('Success');
}

また、ポリフィルを作成する必要があるかどうかもわかりません。どのブラウザもそれをサポートしていないようですhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/contains

IEはどれもそれをサポートしていません.Chromeは明らかに30から始まり、FFは19から始まります.モバイルブラウザもそれをサポートしているとは思えません.

于 2013-10-25T12:15:57.617 に答える