Como obtenho o texto de um botão de opção (não o valor)

Eu sei que posso obter o atributo "value" de um radiobutton, mas estou achando estranhamente difícil obter o texto do radiobutton.

Considere o exemplo abaixo. Tem 3 radiobuttons e tenta alertar o valor do primeiro botão de rádio, que é "vermelho" e, em seguida, tenta alertar o texto do botão de rádio "apple", mas isso falha.

Obter o texto de quase qualquer elemento pode ser feito com elem.childNodes [0] .nodeValue. Por que não funciona para radiobuttons?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" >
<head>
<title>Radio Buttons</title>
<style type="text/css">
</style>
<script type="text/javascript">
function start(){
  var rblist = document.getElementsByName("colors");
  var elem = rblist[0];
  alert(elem.value); // PRINTS "RED"
  alert(elem.childNodes[0].nodeValue); //THROWS ERROR
}
</script>       
</head>
<body onload="start();">
<input type="radio" name="colors" value="red" checked>apple</input>
<input type="radio" name="colors" value="blue">sky</input>
<input type="radio" name="colors" value="green">grass</input>
</body>  
</html>

questionAnswers(4)

yourAnswerToTheQuestion