飞天意大利面神兽
2016-06-29 11:30
function getclsname(clsname,parent){
var oParent=parent?document.getElementById(parent):document,
eles=[],
elements=oParent.getElementsByTagName("*");
for (var i=0,l=elements.length;i<l;i++) {
if(elements[i].className==clsname){
eles.push(elements[i]);
}
}
return eles;
}
window.onload=drag;
function drag(){
var otitle=getclsname("login_logo_webqq","loginPanel")[0],
oclose=document.getElementById("ui_boxyClose"),
odiv=document.getElementById("loginPanel"),
online=document.getElementById("loginState"),
loginStatePanel=document.getElementById("loginStatePanel"),
lis=loginStatePanel.getElementsByTagName("li"),
loginStateShow=document.getElementById("loginStateShow","loginState")[0],
loginstatetxt=getclsname("login-state-txt");
otitle.onmousedown=fnDown;
oclose.onmousedown=function(){
odiv.style.display="none";
}
online.onclick=function(event){
event=event||window.event;
if(event.stopPropagation){event.stopPropagation();}else{event.cancelBubble=true;}
loginStatePanel.style.display="block";
}
for(var i=0,l=lis.length;i<l;i++){
lis[i].onmousemove=function(){
this.style.backgroundColor="#567";
}
lis[i].onmouseout=function(){
this.style.backgroundColor="white";
}
lis[i].onclick=function(event){
event=event||window.event;
if(event.stopPropagation){
event.stopPropagation();
}else{event.cancelBubble=true;}
var id=this.id;//divs=this.getElementsByTagName("div"),
loginStatePanel.style.display="none";
loginstatetxt.innerHTML=this.childNodes[1].innerHTML;
loginStateShow.className='';
loginStateShow.className='login-state-show '+id;
}
}
document.onclick=function(){
loginStatePanel.style.display="none";
}
}
function fnDown(evnet){
event=event||window.event;
var odiv=document.getElementById("loginPanel");
var disx=event.clientX-odiv.offsetLeft,
disy=event.clientY-odiv.offsetTop;
document.onmousemove=function(event){
event=event||window.event;
var x=event.clientX-disx,
y=event.clientY-disy,
outx=document.clientWidth-odiv.offsetWidth-5,
outy=document.clientHeight-odiv.offsetHeight-5;
if(x<5){x=5;}
else if(x>outx){x=outx;}
if(y<5){y=5;}
else if(y>outy){y=outy;}
odiv.style.left=x+'px';
odiv.style.top=y+'px';
}
document.onmouseup=function(){
document.onmousemove=null;
document.onmouseup=null;
}
}注:HTML和CSS均用的是老师提供的,未修改。
一共四个BUG,三个有图,第四个是点击状态LI,状态栏内容不变。
还有一种检查方式就是在浏览器预览时,打开开发者工具面板,会报错
loginStateShow.className='login-state-show '+id;,你这句看看index.html中下划线是'_'还是'-';还有 loginstatetxt=getclsname("login-state-txt");这句,我也不是很懂,但是好像应该取id,而不是classname
outx=document.documentElement.clientWidth-odiv.offsetWidth-5,
outy=document.documentElement.clientHeight-odiv.offsetHeight-5;
74 75行换成上面试试,貌似少了个documentElement。
DOM事件探秘
99527 学习 · 1305 问题
相似问题