【问题标题】:why javascript contains property is not working in chrome browser?为什么 javascript contains 属性在 chrome 浏览器中不起作用?
【发布时间】:2013-11-04 13:11:19
【问题描述】:

为什么 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');
}

【问题讨论】:

  • 什么版本的 Chrome?在这里工作正常
  • 首先,它在 Chrome 中对我来说非常好用。其次,没有理由使用== true...
  • 似乎喜欢 contains(); Chrome 不支持。 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
  • 啊,想通了。显然 Stack Overflow 自己实现了contains。 (在此处的控制台中输入String.prototype.contains
  • 你可以使用 indexOf() 代替.. 比如:

标签: javascript


【解决方案1】:

indexof 返回字符串的位置。如果没有找到,它将返回 -1

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

【讨论】:

  • 谢谢 :) 工作正常:) 我也试过这样。 var n=str.indexOf("family");如果(n >= 0){警报(成功); }
【解决方案2】:

contains is not supported in Chrome,但你可以使用 polyfill:

if (!String.prototype.contains) {
    String.prototype.contains = function(s) {
        return this.indexOf(s) > -1
    }
}
'potato'.contains('tat') // true
'potato'.contains('tot') // false

【讨论】:

    【解决方案3】:

    实际上,根据MDN,Chrome 不支持String.contains

    解决问题的方法如下:

    Polyfill

    您可以轻松地填充此方法:

    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');
    }
    

    演示:Fiddle

    【讨论】:

      【解决方案4】:

      您必须了解为什么 包含 不起作用。其实那里 是 containsincludes 两种方法,两者都有不同的 用法。

      包含:

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

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

      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);
      

      希望这有意义

      【讨论】:

        【解决方案5】:

        使用您自己的 contains 方法并覆盖 firefox 的 contains() 方法。因为这种方法被广泛使用,我的意思是 -> (indexof)。

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

        【讨论】:

        【解决方案6】:

        我认为你应该使用 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 开始,我怀疑移动浏览器是否也支持它

        【讨论】:

          猜你喜欢
          • 2020-11-15
          • 1970-01-01
          • 1970-01-01
          • 2015-04-14
          • 2016-03-20
          • 1970-01-01
          • 1970-01-01
          • 2016-07-28
          • 2020-02-21
          相关资源
          最近更新 更多