未捕获的TypeError:对象没有方法'包含'

时间:2013-09-16 13:56:01

标签: javascript typeerror

我在我的项目中使用了jQuery .contain()方法,它在Firefox中正常运行但在Google Chrome中出错。我的代码如下所示:

if (txtsearchvalue.contains('-')) {
  var Arraytxtsearchvalue = [];   
  Arraytxtsearchvalue = txtsearchvalue.split('-');
}
  

未捕获的TypeError:对象17-331-250251-92没有方法'包含'

在Chrome 47中,错误消息为:

  

未捕获的TypeError:txtsearchvalue.contains不是函数

2 个答案:

答案 0 :(得分:3)

jQuery有一个contains()方法,但它不像你想象的那样工作;特别是,它不适用于文本。 jQuery还有一个:contains 选择器,它更接近你看起来想要的......

那就是说,我怀疑txtsearchvalue是一个字符串而不是一个jQuery对象。 FireFox采用String.contains()方法,而Chrome则没有。

Mozilla的非标准方法(MDN)有一个polyfill:

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

答案 1 :(得分:2)

只需使用String.prototype.indexOf()

if (txtsearchvalue.indexOf('-') > -1) {  
   var Arraytxtsearchvalue = [];   
   Arraytxtsearchvalue = txtsearchvalue.split('-'); 
}