Puede haber varios problemas, pero a priori parece que no tienes definida la variable contador. Un ejemplo:
Código:
<script>
function test(){
alert(contador);//undefined
}
test();
var contador=1;
</script>
Eso devuelve undefined, ya que la variable global es definida luego la invocación de la función.
En cambio esto funciona como se espera:
Código:
<script>
var contador=1;
function test(){
alert(contador);//1
}
test();
</script>
Incluso esto funciona debidamente:
Código:
<script>
function test(){
alert(contador);//1
}
var contador=1;
test();
</script>
Porque la variable se define antes de la invocación.