Ответ 1
indexof возвращает позицию строки. Если он не найден, он будет возвращать -1:
var ClearFilterValue = 'family Schools';
alert(ClearFilterValue.indexOf("family") != -1);
Почему javascript содержит свойство, которое не работает в браузере Chrome? Я пробовал, что Содержит Свойство в javascript. Он отлично работает в 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');
}
indexof возвращает позицию строки. Если он не найден, он будет возвращать -1:
var ClearFilterValue = 'family Schools';
alert(ClearFilterValue.indexOf("family") != -1);
contains
не поддерживается в Chrome, но вы можете использовать polyfill:
if (!String.prototype.contains) {
String.prototype.contains = function(s) {
return this.indexOf(s) > -1
}
}
'potato'.contains('tat') // true
'potato'.contains('tot') // false
На самом деле String.contains
не поддерживается в Chrome в соответствии с MDN
Здесь можно решить проблему:
Polyfill
Вы можете легко 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');
}
Демо: Скрипт
Используйте свой собственный метод contains и переопределите метод firefox contains(). Поскольку этот метод широко используется, я имею в виду → (indexof
).
String.prototype.contains = function(str) { return this.indexOf(str) != -1; };
Вы должны понять, почему содержит не работает. На самом деле это два метода: содержит и включает, и оба имеют разные использование.
содержит:
Метод contains() возвращает логическое значение, указывающее, является ли node является потомком указанного node.
Потомком может быть ребенок, внук, правнук и т.д.
var span = document.getElementById("mySPAN");
var div = document.getElementById("myDIV").contains(span);
Результат div будет:
true
найдите jsfiddle
включает в себя:
Проверьте, включает ли строка в "мир":
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);
Надеюсь, что это имеет смысл
Я думаю, вы должны использовать 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, и я сомневаюсь, что мобильные браузеры поддерживают его.