He creado una función que reemplaza una cadena base64 con la dirección de correo electrónico correspondiente al hacer clic en algún texto.
Esto funciona, pero por alguna razón aparece este error: Uncaught TypeError: Cannot read properties of undefined (reading 'target')
.
JS
initEmails() { const emailToggles = document.querySelectorAll('.email'); if (!emailToggles) { return; } emailToggles.forEach(toggle => { toggle.addEventListener('click', this.replaceEmail); }); } replaceEmail(ev){ const target = ev.target.closest('.email'); if (!target.classList.contains('active')) { ev.preventDefault(); } const email = atob(target.dataset.value); target.setAttribute('href', 'mailto:' + email); target.querySelector('.replace').innerText = email; target.classList.add('active'); }
HTML:
<span> <h5>@lang('E-mail')</h5> <a href="javascript:void(0);" data-value="{{ base64_encode($employee->email) }}" class="email"> <span class="replace">Toon e-mailadres</span> </a> </span>
Intenté verificar si existe .email
antes de inicializar las funciones de esta manera:
if (document.querySelector('.email') !== null) { this.initEmails(); this.replaceEmail(); }
Pero el error sigue apareciendo en mi consola.
¿Que puedo hacer para arreglarlo?