*** EDIT - 私はクラスを追加しようとしているように見えます(クラスをテストするためにいくつかのCSSを変更しようとしましたが、 tはこれは私がやって書いた関数である私は、私はそれを操作できるように/その親要素内容に基づいてDOM内の要素にクラスを追加します
、テキストに基づいてDOMの要素を見つけ、それにクラスを追加したい)
を何でもしますこの前(私はfunctionを使用してstackoverflowからDOMを歩いて、一致を置き換えるために関数を呼び出す - 実際の文字列の値は現在重要ではない) - 私が変更しているHTMLはDOMです。
私はちょうど真下にこのような言葉でテキストを交換するときvar MATCH = ['word'];
var REPLACE = ['other'];
function replaceText(textNode) {
var badWord = textNode.nodeValue;
var replaceWord = "";
badWord.className = "filter";
//Go through and match/replace strings equal to MATCH
for (var i=0; i< MATCH.length; i++) {
replaceWord = document.getElementsByClassName("filter").innerHTML;
replaceWord = replaceWord.replace(new RegExp('\\b' + MATCH[i] + '\\b', 'g'), REPLACE[i]);
}
textNode.nodeValue = replaceWord;
}
は、それは動作します - しかし、私は私が親要素を変更することができるように/ CSSに、
//working version without adding class
function hide(textNode) {
var badWord = textNode.nodeValue;
//Go through and match/replace strings equal to MATCH
for (var i=0; i< MATCH.length; i++) {
badWord = badWord.replace(new RegExp('\\b' + MATCH[i] + '\\b', 'g'), REPLACE[i]);
}
textNode.nodeValue = badWord;
}
機能にアクセスし、クラスから変更したいですstackoverflowのポストから -
walk(document.body);
function walk(node) {
var child, next;
switch (node.nodeType) {
case ELEMENT: // Element
case DOCUMENT: // Document
case DOCUMENT_FRAGMENT: // Document fragment
child = node.firstChild;
while (child) {
next = child.nextSibling;
walk(child);
child = next;
}
break;
case TEXT: // Text node
replaceText(node);
break;
}
}
あなたは、仕事 'textNode.className = 'フィルタ' をしようとはしませんのnodeValue、上addClassを使用します;'。複数のクラス 'filter'がある場合は、 'document.getElementsByClassName( 'filter')'を使用してそれらをすべて取得できます。完全な答えを得るには、修正しようとしているHTML、置き換えたい単語、DOM解析関数を使ってstackoverflowのポストにリンクしてください。 – M4tini
@ M4tiniはリンクを追加しました - 私は現在のページを修正しています - これはクロムエクステンション用です – user146303