1 つのアプローチを次に示します。
var divs = document.getElementsByTagName('div');
for (var i=0, len=divs.length; i<len; i++){
var current = divs[i];
if (current.className == 'Lore Ipsum') {
switch (current.firstChild.nodeValue) {
case 'foo bar':
current.firstChild.nodeValue += '- wrong';
break;
case 'ham spam':
current.firstChild.nodeValue += '- right';
break;
}
}
}
JS フィドルのデモ。
ただし、このアプローチは、質問に詳細がなく、HTML が記述されていないために作成しなければならなかったいくつかの仮定に基づいています。これらの仮定は次のとおりです。
- 両方
div
のクラスを持つこれらの要素のテキスト コンテンツのみをチェックすること(およびそれらのクラス名は常にその順序になること)、 Lore
Ipsum
- チェックしたいテキストは、常にチェックし
firstChild
たいdiv
要素の です。
上記のコードは、クラス名の順序が重要でないように修正されました。
var divs = document.getElementsByTagName('div');
for (var i=0, len=divs.length; i<len; i++){
var current = divs[i],
cName = current.className;
if (cName.indexOf('Lore') > -1 && cName.indexOf('Ipsum') > -1) {
switch (current.firstChild.nodeValue) {
case 'foo bar':
current.firstChild.nodeValue += ' - wrong';
break;
case 'ham spam':
current.firstChild.nodeValue += ' - right';
break;
}
}
}
JS フィドルのデモ。
Shadow Wizard の正確なコメント (回答の下) に応じて、再度改訂しました。
div コンテンツに空白があると機能しません。例- 最初の空でない子を取得する関数を追加しますか?
を使用すると、比較のためにtrim()
から前後の空白が削除されるため、次のようになります。nodeValue
foo bar
foo bar
var divs = document.getElementsByTagName('div');
for (var i=0, len=divs.length; i<len; i++){
var current = divs[i],
cName = current.className;
if (cName.indexOf('Lore') > -1 && cName.indexOf('Ipsum') > -1) {
switch (current.firstChild.nodeValue.trim()) {
case 'foo bar':
current.firstChild.nodeValue += ' - wrong';
break;
case 'ham spam':
current.firstChild.nodeValue += ' - right';
break;
}
}
}
JS フィドルのデモ。
参考文献: