Javascript - проверить, содержит ли div слово? - PullRequest
22 голосов
/ 09 марта 2012

Как я могу проверить, содержит ли div определенное слово?

var divs= document.getElementsByTagName('div');
for (var i = 0, len = divs.length; i < len; ++i) {

    if (divs[i].text = '*word*'){
    //do somthing
}
}

не работает.

Ответы [ 8 ]

36 голосов
/ 09 марта 2012

используйте функцию indexOf

if(divs[i].innerHTML.indexOf("word") !== -1) {
    // something
}
6 голосов
/ 21 марта 2017

Использование includes():

node.textContent.includes('Some text');
4 голосов
/ 01 июля 2013
if (document.getElementById('divId').innerHTML.indexOf("word") != -1) { }
1 голос
/ 09 марта 2012

Черт возьми, так много ответов!

Чтобы получить только текст элемента, проще всего использовать textContent или, если не поддерживается, innerText ,Все используемые браузеры поддерживают один или другой (возможно, оба).Вы также можете использовать регулярное выражение (indexOf тоже работает, RegExp - просто опция), поэтому:

var re = new RegExp('*' + word + '*');

if (re.test(div[i].innerText || div[i].textContent)) {
  // div[i] contains /*word*/
} 

Более надежное решение будет выглядеть так:

function getText(el) {
  if (typeof el.textContent == 'string') {
    return el.textContent;
  }
  if (typeof el.innerText == 'string') {
    return el.innerText;
  }
}

var re = new RegExp('*' + word + '*');

if (re.test(getText(div[i]))) {
  // div[i] contains /*word*/
} 
1 голос
/ 09 марта 2012

В дополнение к тому, что другие говорили об использовании функции .indexOf(), я бы хотел сказать, что .text не является свойством узла div. Пользователь .innerHTML

if (divs[i].innerHTML.indexOf('word') > -1){}
1 голос
/ 09 марта 2012

Вы должны использовать оператор сравнения, а не назначать переменную.

if (divs[i].text == '*word*'){

Я бы порекомендовал использовать indexOf.

if (divs[i].text.indexOf('*word*') != -1){
1 голос
/ 09 марта 2012

Попробуйте функцию String.indexOf(): if (divs[i].text.indexOf('word') != -1) {

0 голосов
/ 09 марта 2012

используйте регулярное выражение:

if ( divs[i].textContent.match ( /\bword\b/ ) ){
    //do something
}

@ RobG напомните мне об этом

if ( divs[i].innerHTML.match ( /\bword\b/ ) ){
    //do something
}

= 3 =

...