问答详情
源自:4-1 [DOM事件] QQ面板拖拽效果(上)

DOM事件探秘-QQ拖曳效果

function getByName(clsName,parent) {

  var oParent = parent?document.getElementById(parent):document,

      eles = [],

      elements = oParent.getElementsByTagName('*');


  for (var i=0;i<elements.length;i++) {

      if (elements[i].className ==  clsName) {

        eles.push(elements[i]);

      }

      return eles;

  }

}


window.onload = drag;


function drag() {

  var oTitle = getByName('login_logo_webqq','loginPanel')[0];

  oTitle.onmousedown = fnDown;

}


function fnDown() {

  var oDrag = document.getElementById('loginPanel')

  document.onmousemove = function(event){

    event = event || window.event;

    oDrag.style.left = event.clientX+'px';

    oDrag.style.top = event.clientY+'px';

  }

}

DOM时间探秘里边照着视频打的,对了一遍没找到问题……控制台报错Cannot set property 'onmousedown' of undefined,不知道啥原因……望解答,谢谢!

提问者:自律让人自由4008941 2016-11-20 13:19

个回答

  • 宋匿
    2016-11-20 22:52:00

    return eles;

    应该在 for 循环外

      for (var i=0;i<elements.length;i++) {
          if (elements[i].className ==  clsName) {
            eles.push(elements[i]);
          }
      }
      return eles;