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>
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如何检查网页元素是不是包含某个特定字符串?
Javascript 检查类名是不是已添加到 DIV 并执行任务
jQuery 选择器 - 检查当前 div 属性是不是包含文本?