Autor Tema: Crear apariencia de link sin serlo con javascript:void(0) en JavaScript CU01184E  (Leído 3277 veces)

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Buenas tardes. Subo una posible solución del ejercicio CU01184E del curso JavaScript desde cero.

Citar
EJERCICIO

Escribe este código en un editor y responde a las siguientes preguntas:

Código: [Seleccionar]
<!DOCTYPE html>

<html><head><title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">

</head>

<body><h2>Cursos aprenderaprogramar.com</h2><h3>Ejemplos JavaScript</h3>

<a href="javascript:void(0);" onclick="if (confirm('Are you sure?')) { var f = document.createElement('form');

 f.style.display = 'none'; this.parentNode.appendChild(f); f.method = 'POST'; f.action = this.href;var m = document.createElement('input');

 m.setAttribute('type', 'hidden'); m.setAttribute('name', '_method'); m.setAttribute('value', 'delete'); f.appendChild(m);

 var s = document.createElement('input'); s.setAttribute('type', 'hidden'); s.setAttribute('name', 'authenticity_token');

 s.setAttribute('value', 'aprenderaprogramar.com='); f.appendChild(s);f.submit(); };return false;">Pulsa aquí para proceder</a>
</body></html>

Citar
a) ¿Para qué se utiliza aquí javascript: void(0)?

Citar
Void es un operador JavaScript que evalúa (ejecuta) la expresión que se le pasa como argumento y a continuación devuelve <<undefined>>. En este caso, javascript:void(0) ejecuta 0, que en realidad no tiene ningún efecto, y devuelve undefined. ¿Y qué significa esto? Pues lo mismo que href="javascript://", es decir, que simplemente se crea un link que no enlaza con ningún lado (o podríamos decir que enlaza con undefined, lo cual es enlazar con ningún lado).

Citar
b) Explica paso a paso qué es lo que hace el código JavaScript que se ha incluido como respuesta al evento click.

Primero se establece una condicional mediante el método "confirm()" al que si se cumple se ejecuta el código a continuación. La variable local f es referenciada a la creación de un formulario. Después se establece, para dicho formulario, un estilo de tipo 'none', es decir, que no será visible. Mediante la instrucción "this.parentNode.appendChild(f)" se incluye el formulario en el padre del elemento <a>, es decir, al <body>. Para el atributo method del fomulario se establece "post", para el atributo action se establece el mismo valor que tenía el elemento que recibe el evento. A través de la variable local "m" se crea un elemento tipo "input". Para este elemento se modifican los atributos "type" a "hidden", el "name" a "_method" y el "value" a "delete". Dicho elemento se incluye al formulario mediante la instrucción: "f.appendChild(m)".
La variable local "s" crea otro elemento "input". Para este elemento se modifican los atributos: "type" a "hidden", "name" a "authenticity_token" y "value" a "aprenderaprogramar.com=". También se incluye al formulario (f.appendChild(s)). Se envía el formulario con la instrucción: "f.submit()".

Citar
c) ¿Qué implica el uso de return false; en este código?

Impide el envío del formulario, cancela la acción (submit()) que está establecida por defecto a dicho método.

Citar
d) Modifica el código para que la apariencia y resultados sean iguales pero sin usar un elemento <a> … </a>

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo aprenderaprogramar.com</title>
<meta charset="utf-8">
<style type="text/css">
span{
color: blue;
cursor: pointer;
text-decoration: underline;
}
</style>
</head>
<body>
<h2>Cursos aprenderaprogramar.com</h2>
<h3>Ejemplos JavaScript</h3>
<span href="javascript:void(0);" onclick="if (confirm('Are you sure?')) { var f = document.createElement('form');f.style.display = 'none'; this.parentNode.appendChild(f); f.method = 'POST'; f.action = this.href;var m = document.createElement('input');m.setAttribute('type', 'hidden'); m.setAttribute('name', '_method'); m.setAttribute('value', 'delete'); f.appendChild(m);var s = document.createElement('input'); s.setAttribute('type', 'hidden'); s.setAttribute('name', 'authenticity_token');s.setAttribute('value', 'aprenderaprogramar.com='); f.appendChild(s);f.submit(); };return false;">Pulsa aquí para proceder
  </span>
</body>
</html>

Gracias
« Última modificación: 03 de Mayo 2016, 17:17 por César Krall »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:CU01184E javascript:void(0) en JavaScript
« Respuesta #1 en: 30 de Abril 2016, 10:35 »
Hola dimiste

Los apartados a, b y c los veos bien.

El código que pegaste como solución del apartado d esta incompleto, falta el script.


Saludos. ;D

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Re:CU01184E javascript:void(0) en JavaScript
« Respuesta #2 en: 30 de Abril 2016, 15:02 »
Buenas, pedro,,

Gracias por corregirme el ejercicio y por tu tiempo.

Pero no era eso lo que pedía el ejericicio? El script está en línea.

No es eso lo que pedía el ejercicio?

Citar
d) Modifica el código para que la apariencia y resultados sean iguales pero sin usar un elemento <a> … </a>

Dejé el mismo script como el que había en el ejercicio, sólo cambié la etiqueta <a> por <span> y se visualiza como si fuera en enlace.




pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:CU01184E javascript:void(0) en JavaScript
« Respuesta #3 en: 30 de Abril 2016, 19:02 »
Yo entiendo que se debería hacer algo como lo que se hace en el siguiente enlace.

https://www.aprenderaprogramar.com/foros/index.php?topic=4301.msg17896#msg17896

Saludos. ;D

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Re:CU01184E javascript:void(0) en JavaScript
« Respuesta #4 en: 30 de Abril 2016, 19:19 »
Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo aprenderaprogramar.com</title>
<meta charset="utf-8">
<style type="text/css">
span{
color: blue;
cursor: pointer;
text-decoration: underline;
}
</style>
<script type="text/javascript">
function ejemplo(){

if (confirm('Are you sure?')){
var f = document.createElement('form');
f.style.display = 'none'; this.parentNode.appendChild(f);
f.method = 'POST';
f.action = this.href;
var m = document.createElement('input');
m.setAttribute('type', 'hidden');
m.setAttribute('name', '_method');
m.setAttribute('value', 'delete');
f.appendChild(m);
var s = document.createElement('input');
s.setAttribute('type', 'hidden');
s.setAttribute('name', 'authenticity_token');
s.setAttribute('value', 'aprenderaprogramar.com=');
f.appendChild(s);
f.submit();
};
return false;

}

</script>
</head>
<body>
<h2>Cursos aprenderaprogramar.com</h2>
<h3>Ejemplos JavaScript</h3>
<span onclick="">Pulsa aquí para proceder</span>
</body>
</html>

La verdad que en la etiqueta <span> no se porque había dejado el atributo "href".

Gracias, Pedro :)

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".