Tengo este enlace en mi página HTML:
<a href = ""
onclick = "setBodyHtml ('new content'); return false; "
> click here </a>
La función setBodyHtml () se define como:
function setBodyHtml (s)
{ document.body.innerHTML = s;
}
Cuando hago clic en el enlace, el enlace desaparece y el texto que se muestra en el navegador cambia a "nuevo contenido".
Pero si elimino el "falso" de mi enlace, hacer clic en el enlace no hace nada (aparentemente). ¿Porqué es eso?
Es porque si no devuelvo falso, el comportamiento predeterminado de hacer clic en el enlace y mostrar su página de destino ocurre, no se cancela. PERO, aquí el href del hipervínculo es "", por lo que enlaza con la MISMA página actual. Por lo tanto, la página se actualiza de manera efectiva y aparentemente no sucede nada.
En segundo plano, la función setBodyHtml () todavía se ejecuta. Asigna su argumento a body.innerHTML. Pero debido a que la página se actualiza / recarga inmediatamente, el contenido del cuerpo modificado no permanece visible durante más de unos pocos milisegundos, por lo que no lo veré.
Este ejemplo muestra por qué a veces es ÚTIL usar "return false".
Quiero asignar ALGUNOS href al enlace, para que se muestre como un enlace, como texto subrayado. Pero no quiero que haga clic en el enlace para volver a cargar la página. Quiero que se cancele ese comportamiento predeterminado de navegación = y cualesquiera efectos secundarios causados por llamar a mi función para que tome y permanezca vigente. Por lo tanto, debo "devolver falso".
El ejemplo anterior es algo que probaría rápidamente durante el desarrollo. Para la producción, es más probable que asigne un controlador de clic en JavaScript y llame a preventDefault () en su lugar. Pero para una prueba rápida, el "retorno falso" de arriba hace el truco.