Hola
robusalma:
Éso ocurre porque los estilos que has definido en la etiqueta <style> tienen prevalencia sobre los que defines con javascript (éstos en concreto, no lo digo con carácter general). Quiero decir: Si defines un estilo para una celda en concreto, ésta tiene más importancia sobre todo lo que escribas de la fila. Así, si cambiamos la fila entera como en tu script, dicha celda quedará impasible, que es lo que te está ocurriendo a ti.
Mira este ejemplo para entenderlo mejor:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
<meta http-equiv="Content-type" content="text/html;charset=iso-8859-1" />
<meta name="Author" content="derkeNuke" />
<title>Página nueva</title>
<style type="text/css">
.tabla_detalle2 { background-color: #ccc; }
#prueba { background-color: green; }
</style>
</head>
<body>
<table class="tabla_detalle2">
<tbody>
<tr onmouseover="mOver(this);" onmouseout="mOut(this);">
<th width="25%">prueba</th>
<th width="25%" id="prueba">1</th>
<th width="25%">prueba</th>
<th width="25%"> </th>
</tr>
<tr class="linea2" onmouseover="mOver(this);" onmouseout="mOut(this);">
<td>prueba</td>
<td>1</td>
<td>1</td>
<td> </td>
</tr>
</tbody>
</table>
<script type="text/javascript">
<!--
function mOut(which){ which.style.backgroundColor='#ccc'; return false; }
function mOver(which){ which.style.backgroundColor='#8680F9'; return false; }
// -->
</script>
</body>
</html>
La celda verde permanecerá siempre verde.
La solución pasa por recorrer con DOM todas celdas hijas, por ejemplo.
Saludos