Хмм странно, так до конца и не разобрался в приведенном Вами коде (в следующий раз как минимум форматируйте его с помощью тегов пожалуйста) + не понял где кончается условие и функция, но это не суть важно.
Скорее всего Вы допустили ошибку где то в коде самой функции, т.к. у меня document.getElementById отрабатывает во всех браузерах правильно, в подтверждение этому следующий код (собранный из кусочков Вашего):
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
function setStar(x){
document.getElementById('rating').value = x;
}
</script>
</head>
<body>
<form id="add_comment" action="add_comment.php" method="post">
<input type="hidden" id="rating" name="rate" value="">
</form>
<script type="text/javascript">
setStar(2);
document.write(document.getElementById('rating').value);
</script>
</body>
</html>