Te hice un ejemplo a ver si te sirve. Funciona tanto para mostrar como para ocultar. Podés probar como variante usar la propiedad display en vez de visibility (visibility te mantiene el espacio que ocupa la tabla, display no).
Saludos, espero te sirva
Código:
<html>
<head>
<script language="Javascript">
function mostrar() {
var unaTabla, mostrar;
unaTabla = document.getElementById("unaTabla");
if(unaTabla.style.visibility == "hidden") {
unaTabla.style.visibility = "visible";
mostrar = document.getElementById("mostrar").childNodes[0];
mostrar.data = "Ocultar";
}
else {
unaTabla.style.visibility = "hidden";
mostrar = document.getElementById("mostrar").childNodes[0];
mostrar.data = "Mostrar";
}
}
</script>
</head>
<body>
<table border="1" id="unaTabla" style="visibility: hidden;">
<tr>
<td>Nombre</td><td>Apellido</td>
</tr>
<tr>
<td>Juan</td><td>Pérez</td>
</tr>
<tr>
<td>Mariana</td><td>Fernández</td>
</tr>
<tr>
<td>Claudio</td><td>Rodríguez</td>
</tr>
</table>
<a id="mostrar" href="javascript:mostrar();">Mostrar</a>
</body>
</html>