Ni TD ni TR aceptan focus o blur con parámetros del tipo onfocus="". La razón es que por defecto en ellos no puedes hacer nada mas que ver el contenido. Una prueba de ello es este sencillo script:
De hecho, no funcionara en ningún elemento que no acepte algún tipo de input o pueda ser seleccionado (un <a> funcionaria).
NO funciona<div onfocus="alert('aaaa');">clickea me
</div>
Si Funciona<div><a href="" onfocus="alert('aaaa')">clickea me
</a></div>
De todos modos tu problema puede ser resuelto de una manera bastante simple.
<script>
function myFunction(x) {
// Obtenemos todos los TR de la tabla con id "mi_tabla"
// despues del tbody.
var elementos = document.getElementById('mi_tabla').
getElementsByTagName('tbody')[0].getElementsByTagName('tr');
// Por cada TR empezando por el segundo, ponemos fondo blanco.
for (var i = 1; i < elementos.length; i++) {
elementos[i].style.background='white';
}
// Al elemento clickeado le ponemos fondo amarillo.
x.style.background="yellow";
}
</script>
<tr onclick="myFunction(this)"> <tr onclick="myFunction(this)"> <tr onclick="myFunction(this)">
Así al hacer click sobre un TR los demás (menos el primero que es el que contiene los th) recibirán un fondo blanco y al que le has hecho click un fondo amarillo.
Espero que te sirva.
PD: Obviamente, en jQuery la sintaxis seria mucho mas corta pero no es buena idea incluir jQuery solo para hacer esto..
Saludos