Te explico lo que está sucediendo.
Primero, tu elemento no tiene
explícito el estilo
display:block. De forma que esto:
Código Javascript
:
Ver originalvar state = document.getElementById(fixme).style.display;
No devolverá block la primera vez. La segunda si, porque en tu condición se lo asignás en caso de no tenerlo!
Código Javascript
:
Ver originalif (state == 'block') {
document.getElementById(fixme).style.display = 'none';
} else {
document.getElementById(fixme).style.display = 'block';
}
¿Se entiende?
Podés solucionar eso poniendo el
display:block explícito en e tu elemento:
Código HTML:
Ver original<div style="height: 120px; width: 100%; display:block;" id="fixme">....
</div>
Respecto a lo segundo (Que la página se va para arriba) es más que normal. Es porque estás usando un anchor (<a>) y se está comportando como debe. Para solucionarlo, asegurate de hacer
return false; si no querés que haga su acción por defecto. Así:
Código HTML:
Ver original<a href="#" onclick="hide('fixme'); return false;">..
</a>
Espero esté claro. Un saludo.