Se la domanda fosse stata esposta meglio si perdeva meno tempo entrambi.
A grandi linee una cosa del genere fa quello che cerchi poi va implementata.
codice:
<html>
<head>
<script language="JavaScript">
function controlla(){
	var Text = document.getElementsByTagName("input")
//ciclo che conta tutti i campi input
	for(i=0; i<Text.length; i++)
	alert(i);
	var Tendine = document.getElementsByTagName("select")
//ciclo che conta tutti i campi select
	for(y=0; y<Tendine.length; y++)
	alert(y);
	var Texarea = document.getElementsByTagName("textarea")
//ciclo che conta tutte le textarea
	for(j=0; j<Texarea.length; j++)
	alert(j);
	}


</script>
</head>
</body>
<form action="" method="post" name="modulo" id="modulo" onSubmit="return controlla()">
  <table width="100%" border="0" cellspacing="0" cellpadding="2">
    <tr>
      <td>Nome </td>
      <td><input name="nome" type="text" id="nome"></td>
    </tr>
    <tr>
      <td>Email</td>
      <td><input name="email" type="text" id="email"></td>
    </tr>
    <tr>
      <td>Hobby</td>
      <td><select name="hobby" id="hobby">
        <option value="Seleziona" selected>Seleziona</option>
        <option value="Internet">Internet</option>
        <option value="Modelissimo">Modellismo</option>
        <option value="Figurine">Figurine</option>
        <option value="Sport">Sport</option>
      </select>      </td>
    </tr>
    <tr>
      <td>Testo</td>
      <td><textarea name="testo" id="testo"></textarea>
      <textarea name="testo2" id="testo2"></textarea></td>
    </tr>
    <tr>
      <td></td>
      <td><input type="submit" name="Submit3" value="Invia"></td>
    </tr>
  </table>
</form>
</html>