Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

326
Views
¿Cómo usar códigos JS que son específicos para algunas páginas de un solo archivo JS que contiene códigos JS para todas las páginas?

En mi sitio web, incluí todos mis códigos JavaScript en un solo archivo common.js. El problema al que me enfrento es que algunos de mis códigos JS son específicos de una página. Así que muestra un error en otra página.

Por ejemplo, tengo un ícono de usuario con id 'icono_usuario' que está presente solo en una página, para esa página, todo funciona bien, pero para otra página, me muestra el error "Error de tipo no detectado: no se pueden leer las propiedades de nulo (leyendo 'addEventListener') en common.js:11". Significa que JS no pudo encontrar ese elemento en otra página. Entonces, ¿cómo puedo solucionar este problema? Cualquier sugerencia es muy apreciada.

Aquí está el código para el icono de usuario

 var user_icon = document.getElementById('user-icon'); var menu = document.getElementById('menu'); var x = -100; user_icon.addEventListener('click', function () { if (x == -100) { x = 0 menu.style.right = x; menu.style.opacity = 1; } else { x = -100 menu.style.right = x + '%'; menu.style.opacity = 0; } })
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Puedes agregar una trampa para esto. Esto debería eliminar el error TypeError no detectado.

 var user_icon = document.getElementById('user-icon'); var menu = document.getElementById('menu'); var x = -100; if(user_icon && menu) { user_icon.addEventListener('click', function () { if (x == -100) { x = 0 menu.style.right = x; menu.style.opacity = 1; } else { x = -100 menu.style.right = x + '%'; menu.style.opacity = 0; } }) }
about 4 years ago · Juan Pablo Isaza Report

0

Cuando elimina el contenido DOM que tiene un evento vinculado, DEBE eliminar esos eventos antes de eliminar el contenido.

Puede hacerlo activando un bindEvent y unbindEvents :

 window.onload = bindEvents var menu = document.getElementById('menu'); var x = -100; function bindEvents() { var user_icon = document.getElementById('user-icon'); user_icon.addEventListener('click', myAction, true); } function unbindEvents() { var user_icon = document.getElementById('user-icon'); user_icon.removeEventListener('click', myAction, true); } function myAction() { if (x == -100) { x = 0 menu.style.right = x; menu.style.opacity = 1; } else { x = -100 menu.style.right = x + '%'; menu.style.opacity = 0; } }

Puede llamar a bindEvents y unbindEvents en el momento apropiado, pero tenga en cuenta que su elemento debe estar en el DOM cuando se llamen. De lo contrario, dejará algunos eventos zombis en su página y eso es una pérdida de memoria grave, especialmente cuando se crea una aplicación de una sola página.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!