Третий вариант не проверял. Первый вариант работает, если после этих двух строк писать
div.innerHTML = "some_test";Всё заменяется.
Второй вариант тоже работает, только у вас replace не отрабатывает, не удовлетворяет условию строка, поэтому ничего не изменяется.
Проверено всё в Opera 9.5.
Смотрите где у Вас в функциях косяк, именно эти куски работают.
Ниже пример где это тестировалось.
CODE
<html>
<head>
<title>test</title>
</HEAD>
<BODY bgcolor=lightgreen>
<script>
function Click1()
{
//var div = document.all.voting;
//alert(div.firstChild);
//while (div.firstChild) div.removeChild(div.firstChild);
//div.innerHTML= "asf";
var div = document.getElementById("voting");
var ParentDIV=div.parentNode;
if (!ParentDIV) return;
var text= ParentDIV.innerHTML;
alert(text);
text=text.replace(/ <\x2Fdiv>/gi, "</DIV>");
alert(text);
text="test";
ParentDIV.innerHTML=text;
}
</script>
<table>
<tr>
<td>
<div id="voting">Text in div</div>
</td>
<td>
column2
</td>
</tr>
<tr>
<td>
column21
</td>
<td>
column22
</td>
</tr>
</table>
<a href="#" onclick="Click1();" >rrr</a>
</BODY>
</HTML>
Цитата(Flay @ 2:06:2008, 00:44 )

А нет, выполняется нормально, но по ходу дела сносит и второй DIV
Ой, что-то Вы запутали меня:)