我最近开始使用browserify并创建了一个自定义模块,根据点击的ID切换两个菜单并应用透明叠加效果。在菜单后面。我已经有了它的工作,但只是想得到一些关于天气的反馈它可以提高性能或编码明智,因为我想提高我的JS技能。
/**
* Require modules
*/
var dullBackground = require('./dullBackground');
/**
* Export module
*/
module.exports = function() {
'use strict';
/**
* Selectors
*/
var menu = document.querySelector('#nav-main'),
panel = document.querySelector('#overlay-panel'),
productsPanel = document.querySelector('#products-panel'),
systemsPanel = document.querySelector('#systems-panel'),
close = document.querySelector('#overlay-close'),
activeClass = "active",
hideClass = "hide";
/**
* Methods
*/
function togglePanel (event) {
// Selectors
var element = event.target,
elementId = element.id;
event.preventDefault();
// Conditions
if(elementId === 'page-products' || elementId === 'page-systems') {
dullBackground();
panel.classList.add(activeClass);
}
if(elementId === 'page-products') {
productsPanel.classList.remove(hideClass);
}
if(elementId === 'page-systems') {
systemsPanel.classList.remove(hideClass);
}
}
function closePanel (event) {
// Actions
panel.classList.remove(activeClass);
event.preventDefault();
// Conditions
if (!productsPanel.classList.contains(hideClass)) {
productsPanel.classList.add(hideClass);
}
if (!systemsPanel.classList.contains(hideClass)) {
systemsPanel.classList.add(hideClass);
}
}
/**
* Events/APIs/init
*/
menu.addEventListener('click', togglePanel, false);
close.addEventListener('click', closePanel, false);
};
答案 0 :(得分:1)
在性能方面,我发现了代码缺少的两件事:
使用getElementById而不是querySelector:getElementById比querySelector快得多。
var elemId = event.target.id;
而不是
var element = event.target,
elementId = element.id;