{"id":842,"date":"2024-07-31T07:43:04","date_gmt":"2024-07-31T05:43:04","guid":{"rendered":"https:\/\/blog.sutilweb.eu\/?page_id=842"},"modified":"2024-07-31T07:43:05","modified_gmt":"2024-07-31T05:43:05","slug":"014-dom-eventos-con-parametros-y-remover-eventos","status":"publish","type":"page","link":"https:\/\/sutilweb.eu\/index.php\/lenguajes\/javascript\/javascript-practico\/13-dom-document-object-model\/014-dom-eventos-con-parametros-y-remover-eventos\/","title":{"rendered":"014. DOM: Eventos con Par\u00e1metros y Remover Eventos"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">En el cap\u00edtulo anterior ve\u00edamos las 3 formas que existen para poder declarar un evento:<\/p>\n\n\n\n<!--more-->\n\n\n\n<ul class=\"wp-block-list\">\n<li>Como <strong>atributo<\/strong> de una <strong>etiqueta HTML<\/strong>.<\/li>\n\n\n\n<li>Como <strong>manejador sem\u00e1ntico<\/strong>.<\/li>\n\n\n\n<li>Como <strong>manejador m\u00faltiple<\/strong> cuando queramos desencadenar varias funciones.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">En este cap\u00edtulo vamos a ver como remover <strong>eventos<\/strong>, y como hacer cuando necesitemos pasar <strong>par\u00e1metros<\/strong> a la <strong>funci\u00f3n manejadora<\/strong> del <strong>evento<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pasar par\u00e1metros a una funci\u00f3n manejadora<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">En el cap\u00edtulo anterior dijimos que una <strong>funci\u00f3n<\/strong> que se ejecuta en un <strong>evento<\/strong> se le conoce como <strong>event handler<\/strong> o <strong>manejador de eventos<\/strong>, en la cual hay una regla muy importante, cualquier <strong>funci\u00f3n<\/strong> que se ejecute en un <strong>evento<\/strong> s\u00f3lo puede recibir como par\u00e1metro el evento en s\u00ed, no se le pueden pasar m\u00e1s par\u00e1metros a una <strong>funci\u00f3n manejadora de eventos<\/strong>, pero qu\u00e9 ocurre si tenemos la necesidad de cuando una <strong>funci\u00f3n<\/strong> se ejecute en un <strong>evento<\/strong>, pasar <strong>par\u00e1metros<\/strong> porque necesitamos trabajar dichos <strong>par\u00e1metros<\/strong>, lo podemos hacer, de una manera que enga\u00f1amos algo al <strong>DOM<\/strong> del navegador.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lo que vamos a hacer es en vez de incluir directamente la funci\u00f3n que queremos ejecutar, vamos a utilizar una <strong>arrow function<\/strong>, dentro de la cual s\u00ed que vamos a incluir la <strong>funci\u00f3n<\/strong> que queremos ejecutar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Veamoslo en un ejm.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n&lt;head&gt;\n  &lt;meta charset=\"UTF-8\"&gt;\n  &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"&gt;\n  &lt;title&gt;Eventos con par\u00e1metros&lt;\/title&gt;\n&lt;\/head&gt;\n\n&lt;body&gt;\n  &lt;h1&gt;Eventos con par\u00e1metros&lt;\/h1&gt;\n  &lt;button id=\"evento-multiple\"&gt;Haz clic&lt;\/button&gt;\n\n&lt;script&gt;\n  const $eventoMultiple = document.getElementById(\"evento-multiple\");\n\n  function saludar(nombre = \"Desconocido\") {\n   alert(`Hola ${nombre}`);\n  }\n\n$eventoMultiple.addEventListener(\"click\", () =&gt; {\n  saludar(\"Pedro\");\n});\n&lt;\/script&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Por tanto, para poder pasar <strong>par\u00e1metros<\/strong> a una <strong>funci\u00f3n manejadora<\/strong>, envolvemos dicha <strong>funci\u00f3n<\/strong> en una <strong>arrow function<\/strong> a la cual le pasamos la <strong>funci\u00f3n<\/strong> que queremos ejecutar, con los par\u00e1metros que necesitemos. Como quien va a estar recibiendo el evento es la <strong>arrow function<\/strong>, no tenemos ning\u00fan problema y no nos va a dar ning\u00fan error.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Eliminar eventos<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Al igual que disponemos de una <strong>funci\u00f3n<\/strong> llamada <strong><em>addEventListener()<\/em><\/strong>, tenemos otra <strong>funci\u00f3n<\/strong> llamada <strong><em>removeEventListener()<\/em><\/strong> que lo que hace es remover el <strong>evento<\/strong> asociado. Veamos un ejm para entender su funcionamiento.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n&lt;head&gt;\n  &lt;meta charset=\"UTF-8\"&gt;\n  &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"&gt;\n  &lt;title&gt;Eliminar eventos&lt;\/title&gt;\n&lt;\/head&gt;\n\n&lt;body&gt;\n  &lt;h1&gt;Eliminar eventos&lt;\/h1&gt;\n  &lt;button id=\"evento-remover\"&gt;Removiendo eventos con manejadores m\u00faltiples&lt;\/button&gt;\n\n  &lt;script&gt;\n    const $eventoRemover = document.getElementById(\"evento-remover\");\n\n    const removerDobleClic = (e) =&gt; {\n     alert(`Removiendo el evento de tipo ${e}`);\n     console.log(e);\n     $eventoRemover.removeEventListener(\"dblclick\", removerDobleClic)\n     \/\/ Desabilitamos el bot\u00f3n con la propiedad disabled\n     $eventoRemover.disabled = true;\n    }\n\n   $eventoRemover.addEventListener(\"dblclick\", removerDobleClic);\n &lt;\/script&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>En el cap\u00edtulo anterior ve\u00edamos las 3 formas que existen para poder declarar un evento:<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":800,"menu_order":13,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","footnotes":""},"class_list":["post-842","page","type-page","status-publish","hentry"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Sutil Web","author_link":"https:\/\/sutilweb.eu\/index.php\/author\/sutilweb\/"},"uagb_comment_info":0,"uagb_excerpt":"En el cap\u00edtulo anterior ve\u00edamos las 3 formas que existen para poder declarar un evento:","_links":{"self":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/842","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/comments?post=842"}],"version-history":[{"count":2,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/842\/revisions"}],"predecessor-version":[{"id":844,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/842\/revisions\/844"}],"up":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/800"}],"wp:attachment":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/media?parent=842"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}