Divに特定の単語が含まれているかどうかを確認するにはどうすればよいですか?
var divs= document.getElementsByTagName('div');
for (var i = 0, len = divs.length; i < len; ++i) {
if (divs[i].text = '*Word*'){
//do somthing
}
}
動作しません。
indexOf関数を使用します
if(divs[i].innerHTML.indexOf("Word") !== -1) {
// something
}
includes()
を使用します。
node.textContent.includes('Some text');
if (document.getElementById('divId').innerHTML.indexOf("Word") != -1) { }
.indexOf()
関数の使用について他の人が言ったことに加えて、.text
はdivノードのプロパティではありません。ユーザー.innerHTML
if (divs[i].innerHTML.indexOf('Word') > -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*/
}
String.indexOf()
関数を試してください:if (divs[i].text.indexOf('Word') != -1) {
変数を割り当てない比較演算子を使用する必要があります。
if (divs[i].text == '*Word*'){
indexOf
を使用することをお勧めします。
if (divs[i].text.indexOf('*Word*') != -1){
正規表現を使用します:
if ( divs[i].textContent.match ( /\bword\b/ ) ){
//do something
}
@RobGは私に思い出させる
if ( divs[i].innerHTML.match ( /\bword\b/ ) ){
//do something
}
= 3 =