problema funciones javascript

Tricky22
23 de Febrero del 2006
Hola!!tengo un pekeño problema al llamar recursivamente a funciones de javascript. Se trata simplemente de una página que muestra un calendario. Os pongo el siguiente código de prueba para que veais mi problema. No tiene nada que ver con el calendario por eso os adjunto el código con lo importante.
<html>
<head><title>Calendario</title>
<script language="javascript">
function calendario(n)
{
n++
document.write("<table>")
document.write(" <tr>")
document.write(" <td><a href='#' onclick= calendario()>Anterior</a><strong>Prueba " + n + "</strong><a href='#' onclick= calendario(" + n + ")>Siguiente</a></td>")
document.write(" </tr>")
document.write(" <tr>")
document.write(" <td>Hola</td>")
document.write(" <td>Caracola</td>")
document.write(" </tr>")
document.write("</table>")
}
</script>
</head>
<body>
<script language="javascript">
calendario(1)
</script>
</body></html>
Cuando se carga la página no pasa nada malo, y cuando apreto en "siguiente" o "anterior" por primera vez, tampoco. Pero a la que vuelvo a apretar en "Siguiente" o "anterior" me da un error de página y se queda colgado. ¿¿Porque puede ser??
Muchas Gracias!!Saludos!
Tricky

Drocher
23 de Febrero del 2006
Buenas tardes,
el problema que tienes es que al llamar la primera vez la función, desaparece dicha función del código de la página (mira el código fuente).
Prueba con esto a ver si te sirve.

<html>
<head><title>Calendario</title>
<script language="javascript">
function calendario(n)
{
n++
var objecto= document.getElementById('PruebaCalendario');
objecto.innerHTML='';
calContenido = "<table><tr><td><a href='#' onclick= calendario()>Anterior</a><strong>Prueba " + n + "</strong><a href='#' onclick= calendario(" + n + ")>Siguiente</a></td></tr><tr><td>Hola</td><td>Caracola</td></tr></table>";
objecto.insertAdjacentHTML("afterBegin",calContenido);

}
</script>
</head>
<body>
<P id='PruebaCalendario'>
<table>
<tr>
<td><a href='#' onclick= calendario()>Anterior</a><strong>Prueba 1</strong><a href='#' onclick= calendario(1)>Siguiente</a></td>
</tr>
<tr>
<td>Hola</td>
<td>Caracola</td>
</tr>
</table>
</P>
</body>
</html>


Un saludo