Javascript - 检查 div 是不是包含一个单词?

Posted

技术标签:

【中文标题】Javascript - 检查 div 是不是包含一个单词?【英文标题】:Javascript - check if div contains a word?Javascript - 检查 div 是否包含一个单词? 【发布时间】:2012-03-26 12:06:22 【问题描述】:

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

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

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


没用。

【问题讨论】:

【参考方案1】:

html

<div id="ok">Hello world</div>

javascript

var ok;

ok = document.getElementById("ok").innerHTML

if (ok.includes("world")) 
  document.getElementById("ok").innerHTML = "its working";

【讨论】:

欢迎来到 SO。请花时间解释您的答案,而不仅仅是发布代码。尤其是因为这是一个有其他答案的老问题,所以重要的是要说明为什么您的问题与其他问题不同或有所改进。【参考方案2】:

使用indexOf函数

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

【讨论】:

用 divs[i].style.background = "red"; // 替换某些东西仍然突出显示整个页面。如何获取包含“单词”的 div 的引用?诚然,这个问题并不要求深度,但对于完成度/好奇心,它会很有趣。【参考方案3】:

使用includes():

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

【讨论】:

includes 还不稳定。支持不佳【参考方案4】:
if (document.getElementById('divId').innerHTML.indexOf("word") != -1)  

【讨论】:

【参考方案5】:

使用正则表达式:

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

@RobG 提醒我一下

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

=3=

【讨论】:

在不支持 W3C DOM textContent 属性的浏览器中不起作用。 另外,与 indexOf 相比,正则表达式更慢并且需要更多的处理【参考方案6】:

天哪,这么多答案!

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

【讨论】:

【参考方案7】:

除了别人说的使用.indexOf()函数,我想说.text不是一个div节点属性。用户.innerHTML

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

【讨论】:

这也将匹配 HTML 标签内容(即标签名称和属性名称和值)。 没有说明他在寻找什么类型的内容。 我可能是错的,但我认为很明显 OP 正在寻找匹配文本内容,而不是标记。【参考方案8】:

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

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

我建议使用indexOf

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

【讨论】:

【参考方案9】:

试试String.indexOf()函数:if (divs[i].text.indexOf('word') != -1)

【讨论】:

以上是关于Javascript - 检查 div 是不是包含一个单词?的主要内容,如果未能解决你的问题,请参考以下文章

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

javascript如何检查网页元素是不是包含某个特定字符串?

Javascript 检查类名是不是已添加到 DIV 并执行任务

jQuery 选择器 - 检查当前 div 属性是不是包含文本?

检查 div 是不是包含这些单词中的任何一个,如果是,则显示此 div

如何检查 DOM 中所有 div 的类名是不是具有带有 vanilla Javascript 的特定字符串?