Buenas,
Creo que el problema está en la condición del for, más concretamente en el operador de comparación "<=".
Fíjate que cuando obtienes la propiedad "length" te muestra el total de elementos, en cambio para acceder a los elementos, se comienza desde cero...
Qué pasa si tienes un sólo radio? : length devuelve '1', y el for se ejecuta para '0' y para '1' (mal).
Si tienes 3 como en tu ejemplo, te debería también algún error. pues el for se ejecutaría para los elementos '0', '1', '2', '3'...
... el hecho de que parezca que te funciona con más de uno es que si tuvieras marcado el tercero, se te mostraría el valor en el cuadro de texto, pero luego daría error al buscar el radio '3' que no existe
Para programar en javascript nada mejor en el firefox con la extensión FireBug:
https://addons.mozilla.org/firefox/1843/
Lo que también hay que tener cuidado por que el firefox "se traga" algunas cosas, como que no pongas punto y coma... cosa que no entiendo por qué lo permiten.
Te dejo un ejemplo (prueba a poner y quitar '=')
Código:
<HTML>
<HEAD>
<script language="javaScript">
function marcarempleado()
{
var nEmpleados = document.getElementsByName("nempleado").length;
alert(nEmpleados);
for(i=0; i < nEmpleados; i++)
{
if ( document.getElementsByName("nempleado")[i].checked )
{
document.getElementById("texto").value = document.getElementsByName("nempleado")[i].value;
}
}
}
</script>
</HEAD>
<BODY>
<input type="radio" name=nempleado value=1 onclick="marcarempleado()">
<input type="radio" name=nempleado value=2 onclick="marcarempleado()">
<input type="radio" name=nempleado value=3 onclick="marcarempleado()">
<input type="text" id="texto"/>
</BODY>
</HTML>
Igual se me escapa algo, pero al menos es lo que doy de mi a estas horas xD