Javascript - 检查div是否包含单词?

问题描述 投票:22回答:8

如何检查div是否包含某个单词?

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

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

不起作用。

javascript html if-statement contains
8个回答
35
投票

使用indexOf函数

if(divs[i].innerHTML.indexOf("word") !== -1) {
    // something
}

6
投票

使用includes()

node.textContent.includes('Some text');

3
投票
if (document.getElementById('divId').innerHTML.indexOf("word") != -1) { }

1
投票

尝试String.indexOf()功能:if (divs[i].text.indexOf('word') != -1) {


1
投票

您必须使用比较运算符而不分配变量。

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

我建议使用indexOf

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

1
投票

除了其他人所说的使用.indexOf()函数之外,我想说.text不是div节点属性。用户.innerHTML

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

1
投票

天哪,这么多答案!

要获得元素的文本,简单的方法是使用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*/
} 

0
投票

使用正则表达式:

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

@RobG提醒我

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

=3=

© www.soinside.com 2019 - 2024. All rights reserved.