Tengo una función que devuelve la identificación del elemento actualmente enfocado y una cadena aleatoria. Uso una función diferente para analizar esa cadena.
También necesito devolver la etiqueta aria, que es donde tengo problemas. Ninguno de mis intentos actuales ha funcionado.
var global_focused_id = -1; function GetLastFocusedId() { return global_focused_id; } function reply_focus(focused_id) { global_focused_id = focused_id + ' || ' + Math.random(); console.log(global_focused_id); } <button class="some-class" id="some-id" aria-label="some-label" onfocus="reply_focus(this.id)">Button Text</button>Lo que regresa ahora es: " some-id || 0.1234567890 "
Lo que me gustaría que me devolvieran es: " alguna identificación || alguna etiqueta || 0.1234567890 "
Pase el evento completo (o solo el elemento) y obténgalo de ahí.
https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttribute
var global_focused_id = -1; function reply_focus(el) { global_focused_id = el.id + ' || ' + el.getAttribute('aria-label') + ' || ' + Math.random(); console.log(global_focused_id); } <button class="some-class" id="some-id" aria-label="some-label" onfocus="reply_focus(this)">Button Text</button>Tiene fácil acceso al elemento al que está vinculado el controlador de eventos: el objeto de evento se pasa de forma predeterminada:
function eventHandler(event) {... // aka e, evt, etc. La propiedad de evento Event.target siempre hará referencia a la etiqueta (elemento) con la que el usuario interactuó (por ejemplo, el usuario hizo clic en un botón ahora e.target lo señala). También hay e.currentTarget que apunta a la etiqueta a la que está vinculado el controlador de eventos, en el ejemplo a continuación, el botón es e.target , e.currentTarget y this .
Tenga en cuenta que todos los valores del botón se almacenan en un objeto que puede ser más útil, pero no es necesario. También los controladores de eventos en línea son basura . Lea también sobre Eventos y Delegación de Eventos
let cfg = {}; function getBtnID(event) { const focalPt = event.target; cfg.id = focalPt.id; cfg.key = Math.random(); cfg.label = this.getAttribute('aria-label'); console.log(cfg); }; document.getElementById('exit-0').addEventListener('focus', getBtnID); // OR document.getElementById('btn').onfocus = getBtnID; <button id="exit-0" class="btn" aria-label="close">❌</button>