web-dev-qa-db-ja.com

Javascript-divに単語が含まれているかどうかを確認しますか?

Divに特定の単語が含まれているかどうかを確認するにはどうすればよいですか?

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

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

動作しません。

24
user1104092

indexOf関数を使用します

if(divs[i].innerHTML.indexOf("Word") !== -1) {
    // something
}
40
Igor Azevedo

includes()を使用します。

node.textContent.includes('Some text');
8
Scott Simpson
if (document.getElementById('divId').innerHTML.indexOf("Word") != -1) { }
4
Nimmi

.indexOf()関数の使用について他の人が言ったことに加えて、.textはdivノードのプロパティではありません。ユーザー.innerHTML

if (divs[i].innerHTML.indexOf('Word') > -1){}
1
Nick Rolando

まあ、非常に多くの答え!

要素のテキストだけを取得するための簡単な方法は、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
RobG

String.indexOf() 関数を試してください:if (divs[i].text.indexOf('Word') != -1) {

1
Adam Rofer

変数を割り当てない比較演算子を使用する必要があります。

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

indexOfを使用することをお勧めします。

if (divs[i].text.indexOf('*Word*') != -1){
1
MacMac

正規表現を使用します:

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

@RobGは私に思い出させる

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

= 3 =

0
Torrent Lee