HTMLのファイルに段落の段落があるとします。 TreeWalkerのを使用すると、私は配列にすべての非空のテキストノードをプッシュ:私は「変更」という文字列を持つすべての要素を交換するように、配列の内容を変更しようとすると参照でDOM要素を変更する
function getTextNodes(elem) {
var textNodes = [];
var nextNode;
var treeWalker = document.createTreeWalker(elem, NodeFilter.SHOW_TEXT, {
acceptNode: function(node) {
return node.textContent !== "\n" ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;
}
}, false);
var counter = 1;
while (nextNode = treeWalker.nextNode()) {
textNodes.push(nextNode);
console.log("Pushed " + counter + " times.");
counter++;
}
return textNodes;
}
を、何もブラウザウィンドウに起こりません。
ノードを参照によって保存することは可能ですか?変更するたびにブラウザのテキストも変更されるようになりますか?
EDIT:配列要素を変更
function changeTextNodes(elem) {
for (var i = 0; i < elem.length; i++) {
elem[i] = "change ";
}
}
コード。
EDIT2:
$(document).ready(function() {
changeTextNodes(getTextNodes(document.body));
});
ここでは2つの機能が呼び出される方法です。
をどこにノードを変更しようとするコードですか?それが動作しないコードなら、ここに投稿する必要があります。そうしないと誰も助けられません。また、 '.textContent'は要素ノードからもコンテンツを返すので、ループはテキストノードをポストするだけではありません。 – Pointy
@Pointy:.textContentは "\ n"のみを含むTextNodeをフィルタリングするために使用されます。メインフィルターはその前のパラメーターです。 –
ああ、そうだよ。申し訳ありません。 – Pointy