Вы, вероятно, не хотите брать HTML-код всей страницы и заменять его обновленным HTML-кодом, поскольку все элементы разрушаются и воссоздаются, что имеет значение для обработчиков событий и т. П.
Бывает, что только вчера я ответил на этот другой вопрос здесь . Ответ может быть легко применен к вашей ситуации.
Обновление : Поскольку вы не перемещаете результат в новый элемент, код на самом деле становится проще:
walk(document.body);
function walk(node) {
var child;
switch (node.nodeType) {
case 1: // Element
for (child = node.firstChild;
child;
child = child.nextSibling) {
walk(child);
}
break;
case 3: // Text node
node.nodeValue = node.nodeValue.replace(
/[0-9]+(?:\.[0-9]+){0,1}/g,
function($0) {
msgs.push($0);
var num = parseFloat($0, 10);
if (isNaN(num)) {
return $0;
}
return num * 0.85;
}
);
break;
}
}
Живой пример
Обратите внимание, что я немного изменил регулярное выражение, вы можете помассировать его до тех пор, пока вы не захотите. Но я хотел сопоставлять десятичные точки только тогда, когда следуют цифры. (Стоит отметить, что не все культуры используют .
в качестве десятичной точки, но вы, кажется, в своем примере, так что ...)