32

为什么 javascript contains 属性在 chrome 浏览器中不起作用?我已经尝试过在 javascript 中包含属性。它在 Mozilla Firefox 浏览器中运行良好。但它在 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 不支持,但您可以使用 polyfill:

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

Chrome实际上String.contains不支持根据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 回答
4

您必须了解为什么contains不起作用。实际上有两种方法containsincludes并且都有不同的用法。

包含:

contains() 方法返回一个布尔值,指示节点是否是指定节点的后代。

后代可以是孩子、孙子、曾孙等。

var span = document.getElementById("mySPAN");
var div = document.getElementById("myDIV").contains(span);

div 的结果将是:

true

请找到jsfiddle

包括:

检查字符串是否包含“world”:

var str = "Hello world, welcome to the universe.";
var n = str.includes("world");

n 的结果将是:

true

定义和使用

includes() 方法确定字符串是否包含指定字符串的字符。

如果字符串包含字符,则此方法返回 true,否则返回 false。

注意:includes() 方法区分大小写。

请找jsfiddle

最后当然你也可以使用 indexOf 方法来实现相同的输出

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

希望这是有道理的

于 2016-10-28T04:31:58.133 回答
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');
}

也不确定你是否应该制作一个 polyfill,因为几乎没有浏览器似乎支持它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 回答