//封装一个获取类的函数 function getByClass(clasName,parent){ var parent=parent?document.getElementById(parent):document, eles=[],//存储所有类名为clasName的元素的集合 elements=parent.getElementsByTagName("*");//取出所有元素 for(var i=0,l=elements.length;i<l;i++){ if (elements[i].className==clasName) { eles.push(elements[i]); } } return eles; } window.onload=drag; function drag(){ //拖动 var oTitle=getByClass("login_logo_webqq","loginPanel")[0]; oTitle.onmousedown=fnDown;//鼠标按下 //关闭 var oClose=document.getElementById("ui_boxyClose"), loginPanel=document.getElementById("loginPanel"); oClose.onclick=function(){ loginPanel.style.display="none"; } //点击显示下拉状态栏 var loginState=document.getElementById("loginState"), loginStatePanel=document.getElementById("loginStatePanel"), loginStateShow=document.getElementById("loginStateShow"), txtShow=document.getElementById("login2qq_state_txt"), liState=getByClass("statePanel_li","loginStatePanel"), online=document.getElementById("online"); loginState.onclick=function(){ loginStatePanel.style.display="block"; for(var i=0,l=liState.length;i<l;i++){ liState[i].onmouseover=function(){ this.style.background="gray";//为什么不能用liState[i] } liState[i].onmouseout=function(){ this.style.background="#FFF"; } liState[i].onclick=function(event){ event=event||window.event; loginStatePanel.style.display="none"; //取消事件冒泡 if(event.stopPropagation){ event.stopPropagation(); }else{ event.cancelBubble(); } var id = this.id; txtShow.innerHTML=getByClass("stateSelect_text",id)[0].innerHTML; loginStateShow.className=" "; loginStateShow.className="login-state-show "+this.id; } } } } //鼠标按下 function fnDown(event){ event=event||window.event; var Odrag=document.getElementById("loginPanel"); //先求出鼠标点击时的坐标与对话框的距离(是不会变的) //先获得对话框的距离 var disX=event.clientX-Odrag.offsetLeft, disY=event.clientY-Odrag.offsetTop; //鼠标移动时,让其的上边距以及左边距等于鼠标的坐标 //这个操作使鼠标一直在对话框的左上角 document.onmousemove=function(event){ event=event||window.event; // var disX=event.clientX-Odrag.offsetLeft, // disY=event.clientY-Odrag.offsetTop;//不能放在这里 这样disX会变 //鼠标移动位置,对话框位置改变clientX-disX fnMove(event,disX,disY); } //鼠标松开 document.onmouseup=function(){ document.onmousemove=null; document.onmousedown=null; } } function fnMove(e,disX,disY){ e=e||window.event; var Odrag=document.getElementById("loginPanel"), left=e.clientX-disX, top=e.clientY-disY; Odrag.style.left=left+"px"; Odrag.style.top=top+"px"; }
错误显示:liState[i]is indefine
把所有代码帖出来看看
照理说两种应该都可以,错误提示说的是这个变量没定义吧(undefined?),你把源码贴出来看看吧