开发者问题收集

未捕获的类型错误:对象没有方法“包含”

2013-09-16
1490

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

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

Uncaught TypeError: Object 17-331-250251-92 has no method 'contains'

在 Chrome 47 中错误消息为:

Uncaught TypeError: txtsearchvalue.contains is not a function

3个回答

jQuery 有一个 contains() 方法,但是它并不像您想象的那样工作;具体来说,它不适用于文本。jQuery 还有一个 :contains 选择器 ,它更接近您 似乎 想要的...

话虽如此,我怀疑 txtsearchvalue 是一个字符串,而不是 jQuery 对象。 FireFox 有一个 String.contains() 方法,而 Chrome 没有。

Mozilla 为其非标准方法提供了一个 polyfill( MDN ):

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

只需使用 String.prototype.indexOf() :

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

使用 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes

const sentence = 'The quick brown fox jumps over the lazy dog.';

const word = 'fox';

console.log(`The word "${word}" ${sentence.includes(word) ? 'is' : 'is not'} in the sentence`);
AsukaMinato
2022-12-15