JavaScript es fundamental para sacar el máximo partido a los nuevos elementos y características de HTML5, permitiendo crear experiencias web dinámicas e interactivas. La interacción se produce principalmente de dos maneras:
<article>, <section>, <nav>, <header>, <footer>, <aside>, etc.), son accesibles y manipulables por JavaScript usando las API del DOM. document.getElementById(), document.querySelector(), document.querySelectorAll().setAttribute(), getAttribute(), removeAttribute()).innerHTML, textContent, appendChild(), removeChild()).element.style o gestionando clases con element.classList).addEventListener()).let miVideo = document.querySelector('#miVideo'); // miVideo.play(); // console.log(miVideo.duration);let miLienzo = document.querySelector('#miCanvas'); let ctx = miLienzo.getContext('2d'); // ctx.fillStyle = 'green'; // ctx.fillRect(10, 10, 100, 100);show(), showModal() (para un diálogo modal que bloquea el resto de la interfaz) y close(). let miDialogo = document.querySelector('#miModal'); // miDialogo.showModal(); // miDialogo.close();input (ej. date, color, range), leer sus valores, y especialmente interactuar con la API de validación de restricciones de HTML5 (element.validity para ver el estado de validez, element.setCustomValidity('') para mensajes de error personalizados).<template> para declarar fragmentos de HTML inactivos que luego pueden ser clonados (content.cloneNode(true)) y activados (insertados en el DOM) para generar contenido dinámicamente.data-* personalizados en cualquier elemento son una forma moderna y estándar para que HTML almacene datos que JavaScript puede leer y escribir fácilmente a través de la propiedad dataset del elemento (element.dataset.miAtributo).En esencia, mientras HTML define la estructura y el significado, JavaScript proporciona la capacidad de manipular esa estructura y responder a las interacciones del usuario, aprovechando al máximo las capacidades que los nuevos elementos de HTML5 ofrecen.