Html + JS.
Есть строка div с классом и id'шником. В строке появляется значение по нажатию на кнопку. Такой вопрос, можно ли, с помощью js как-то проверить, есть ли в этой строке значение и, если есть, заменить потом его с помощью innerHTML?
<div class="x" id="y"></div>
JavaScript
Можно ли проверить строку на наличие элементов?
Способов, на самом деле, достаточно много:
String#indexOf(str: String[, fromIndex: Number]): Number - один из старейших способов.
Возвращает найденную позицию str или, если подстрока не найдена, -1.
Параметр fromIndex определяет отступ поиска.
Важно: В условии необходимо использовать сравнение и обязательно строгое:
Без сравнения, -1 (отсутствие подстроки) трактуется как true.
Может возвращать 0 (совпал первый символ), что приводится обычным сравнением к false.
'Hello, world!'.indexOf('world'); // 7
'Hello, world!'.indexOf('o'); // 4, в конце hello
'Hello, world!'.indexOf('o', 5); // 8, вторая буква в world
!!'Hello, world!'.indexOf('z'); // true, отрицательное число приводится к true
!!'Hello, world!'.indexOf('H'); // false, 0 трактуется как false
String#search([regexp: RegExp]): Number - тот же String#indexOf, только с регулярным выражением и отсутствием смещения.
"Date of birth of Einstein: 3/14/1879".search(/\d{4}/); // 32
String#includes(searchString: String[, position: Number]): Boolean - более кошерный вариант String#indexOf с двумя отличиями:
Возвращает Boolean, вместо позиции, что может быть более ожидаемым.
Работает быстрее. Однако разница ощутима только на весьма больших объёмах, проверить.
'Hello, world!'.includes('o'); // true, в конце hello
'Hello, world!'.includes('o', 9); // false, после девятого символа нет 'o'
String#match(regexp: RegExp): Array | Null - String#search на стероидах (однако, медленнее).
Возвращает немного модифицированный массив с найденной подстрокой, позицией совпадения (index) и свойством input - строкой, в котором проходил поиск или Null, если регулярка ничего не нашла.
Опционально, в массиве могут быть захваченные группы.
При использовании флага g, вернутся все найденный совпадения (правда без групп и особых свойств):
"Date of birth of Einstein: 3/14/1879".match(/(\d{4})/); // [0: "1879", 1: "1879", index: 32, input: "Date of birth of Einstein: 3/14/1879", length: 2]
`Date of birth of Einstein: 3/14/1879;
Date of birth of Hendrik Lorentz: 7/18/1853`.match(/(\d)\/(\d{2})\/(\d{4})/g); // [0: "3/14/1879", 1: "7/18/1853", length: 2]
Есть ещё методы RegExp#test или RegExp#exec, который так же могут быть использованы для проверки, но это уже совсем другая история.
String#indexOf(str: String[, fromIndex: Number]): Number - один из старейших способов.
Возвращает найденную позицию str или, если подстрока не найдена, -1.
Параметр fromIndex определяет отступ поиска.
Важно: В условии необходимо использовать сравнение и обязательно строгое:
Без сравнения, -1 (отсутствие подстроки) трактуется как true.
Может возвращать 0 (совпал первый символ), что приводится обычным сравнением к false.
'Hello, world!'.indexOf('world'); // 7
'Hello, world!'.indexOf('o'); // 4, в конце hello
'Hello, world!'.indexOf('o', 5); // 8, вторая буква в world
!!'Hello, world!'.indexOf('z'); // true, отрицательное число приводится к true
!!'Hello, world!'.indexOf('H'); // false, 0 трактуется как false
String#search([regexp: RegExp]): Number - тот же String#indexOf, только с регулярным выражением и отсутствием смещения.
"Date of birth of Einstein: 3/14/1879".search(/\d{4}/); // 32
String#includes(searchString: String[, position: Number]): Boolean - более кошерный вариант String#indexOf с двумя отличиями:
Возвращает Boolean, вместо позиции, что может быть более ожидаемым.
Работает быстрее. Однако разница ощутима только на весьма больших объёмах, проверить.
'Hello, world!'.includes('o'); // true, в конце hello
'Hello, world!'.includes('o', 9); // false, после девятого символа нет 'o'
String#match(regexp: RegExp): Array | Null - String#search на стероидах (однако, медленнее).
Возвращает немного модифицированный массив с найденной подстрокой, позицией совпадения (index) и свойством input - строкой, в котором проходил поиск или Null, если регулярка ничего не нашла.
Опционально, в массиве могут быть захваченные группы.
При использовании флага g, вернутся все найденный совпадения (правда без групп и особых свойств):
"Date of birth of Einstein: 3/14/1879".match(/(\d{4})/); // [0: "1879", 1: "1879", index: 32, input: "Date of birth of Einstein: 3/14/1879", length: 2]
`Date of birth of Einstein: 3/14/1879;
Date of birth of Hendrik Lorentz: 7/18/1853`.match(/(\d)\/(\d{2})\/(\d{4})/g); // [0: "3/14/1879", 1: "7/18/1853", length: 2]
Есть ещё методы RegExp#test или RegExp#exec, который так же могут быть использованы для проверки, но это уже совсем другая история.
Похожие вопросы
- Вопрос только к тем, кто знает js: Кому не лень, объясните мне нубу значение каждого элемента небольшого кода (10 строк).
- как проверить в двух больших массивах всё на наличие того же самого в другом. javascript
- Можно ли отловить событие когда один элемент попадает на другой в js?
- Как менять строки и столбцы в двумерном массиве JS
- Поиск элементов в двумерном массиве
- напишите программу которая проверяет элементы массива на схожесть
- Программа по вычислению индекса элемента массива в джава
- Как запретить переход по адресной строке?
- Как правильно распечатать элементы ?
- Что не так делаю? Должно из импута элемент сверяться с элементом из массива а1