出现如图的错误,代码贴在下面
//单例模式
var desk = (function(){
var unique;
function getInstance(){
if(unique === undefined){
unique = new Desk();
}
return unique;
}
//getInstance();
return {
getInstance:getInstance
};
/*
桌面类
*/
function Desk(){
this.desk_main = document.getElementsByClassName('desk_main')[0];
this.desk_top_navbar = document.getElementsByClassName('desk_top_navbar')[0];//顶部导航
this.sub_desk = document.getElementsByClassName('sub_desk');//子桌面
//alert(desk_main);
this.desk_num = 5;//子桌面个数
this.desk_index = this.desk_oldindex = 0;//当前字桌面索引
this.pageNumber = document.getElementsByClassName('pageNumber')[0];
this.aA = this.pageNumber.getElementsByTagName('a');//顶部导航数字按钮
this.desk_top_navbar_wrap = document.getElementsByClassName('desk_top_navbar_wrap')[0];
this.tool = document.getElementsByClassName('tool')[0];
this.user = document.getElementsByClassName('user')[0];
this.iTop = 30;
this.iRight = 40;
this.appSelector = 'desk_app';
this.appHeight = 88;
this.appWidth = 88;
this.sortType = 0;//图标排列方式0竖排 1横排
this.deskHeight = this.sub_desk[0].offsetHeight;
this.deskWidth = this.sub_desk[0].offsetWidth;
this.minZIndex = 100;
this.textMenuHtml = '';//暂时不用
this.textMenu = document.getElementsByClassName('textMenu')[0];//右键菜单
this.appTextMenu = document.getElementsByClassName('appTextMenu')[0];//app右键菜单
this.appName = 'app_name';
this.appImg = 'app_img';
this.sideBar = document.getElementsByClassName('side_bar')[0];
//this.skinp = document.getElementsByClassName('skin')[0]; //皮肤设置区域
//this.skinSetBtn = document.getElementsByClassName('pannel')[0];//皮肤设置按钮
this.isAcitive = false;//用来判断背景设置弹窗是否被激活
this.scrollBar_item = null;//背景设置弹窗滚动条
this.bg = null;//背景设置弹窗滚动条控制区域
this.scrollSpeed = 10;
//console.log(this)
this.doInit();
}
Desk.prototype = {
constructor:'Desk',
doInit:function(){
this.setLayer();
this.setNumNavBar();
this.setScroll();
this.setAppPos();
this.setAppDrag();
this.setTextMenu();
this.blind();
this.setSkin();
this.sideBarPop();
},
/*
桌面整体布局
*/
setLayer:function(){
//布局转换
var _this = this;
var top = _this.desk_main.offsetTop;
with(_this.desk_main.style){
position = 'absolute';
width = this.desk_num*100+'%';
left = 0;
top = top + 'px';
height = viewH() - _this.desk_top_navbar.offsetHeight-_this.desk_top_navbar.offsetTop + 'px';
}
var width = parseInt(1/_this.desk_num*100);
for(var i=0;i<_this.sub_desk.length;i++){
_this.sub_desk[i].style.width = width +'%';
}
//for()
},
/*
设置app的排列方式
*/
setAppPos:function(){
var _this = this;
var rows = Math.floor(_this.deskHeight/(_this.iTop+_this.appHeight));
var cols = Math.floor(_this.deskWidth/(_this.iRight+_this.appWidth));
for(var i=0;i<_this.sub_desk.length;i++){
var apps = _this.sub_desk[i].getElementsByClassName(_this.appSelector);
//console.log(apps);
var pos = [];
for(var j=0;j0){
cur += _this.scrollSpeed;
//scrollBar_item.sty
//_this.bg.style.top =
}else{
cur -= _this.scrollSpeed;
}
if(cur<0){
cur=0
}else if(cur>_this.scrollBar_item.parentNode.offsetHeight-_this.scrollBar_item.offsetHeight){
cur = _this.scrollBar_item.parentNode.offsetHeight-_this.scrollBar_item.offsetHeight
}
var scale = cur/(_this.scrollBar_item.parentNode.offsetHeight-_this.scrollBar_item.offsetHeight);
_this.bg.style.top = -(_this.bg.offsetHeight-_this.scrollBar_item.parentNode.offsetHeight)*scale+'px';
_this.scrollBar_item.style.top = cur+'px';
}else{
if(detail>0){
_this.desk_index++;
if(_this.desk_index==_this.desk_num){
_this.desk_index = 0;
}
}else{
_this.desk_index--;
if(_this.desk_index<0){
_this.desk_index = _this.desk_num-1;
}
}
_this.aA[_this.desk_oldindex].className = '';
_this.aA[_this.desk_index].className = 'on';
_this.desk_oldindex = _this.desk_index;
startMove(_this.desk_main,{
'left':-viewW()*_this.desk_index
},300,'Back easeOut');
}
}
/*
防止某一事件连续触发
*/
var _timer = {};
function delay_till_last(id,fn,wait){
if(_timer[id]){
clearTimeout(_timer[id]);
delete _timer[id];
}
return _timer[id] = setTimeout(function(){
fn();
delete _timer[id];
},wait);
}
},
setAppDrag:function(){
var _this = this;
for(var i=0;i<_this.sub_desk.length;i++){
var apps = _this.sub_desk[i].getElementsByClassName(_this.appSelector);
var pos = [];
for(var j=0;jscrollBar.offsetHeight-_this.scrollBar_item.offsetHeight){
t = scrollBar.offsetHeight-_this.scrollBar_item.offsetHeight;
}
scale = t/(scrollBar.offsetHeight-_this.scrollBar_item.offsetHeight);
_this.bg.style.top = -(_this.bg.offsetHeight-scrollBar.offsetHeight)*scale+'px';
//scrollBar_item.style.left = l + 'px';
_this.scrollBar_item.style.top = t + 'px';
};
document.onmouseup = function(){
this.onmousemove = null;
this.onmouseup = null;
}
};
},
sideBarPop:function(){
var _this = this;
var btn = _this.sideBar.getElementsByClassName('q')[0];
var popMenu = _this.sideBar.getElementsByClassName('side_bar_menu')[0];
var oExit = _this.sideBar.getElementsByClassName('exit')[0];
btn.onclick = function(){
startMove(popMenu,{
'left':popMenu.parentNode.offsetWidth + 10
},300,'Back easeInOut');
};
oExit.onclick = function(){
startMove(popMenu,{
'left':-popMenu.offsetWidth
},300,'Back easeInOut');
};
}
};
})();
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
将你的
修改成
因为你的desk是个闭包,你这个闭包的要执行的是getInstance方法,但是你却return了一个对象,这样的话在执行desk()的时候自然报错。
这个是我的答案
亲测可用。
这写的是什么年代的代码啊,又是 DOMMouseScroll 又是一堆 getElementsByClassName