开发中用到了,就写了一个计算元素到窗口的边距用的函数,记录一下。
第一次用递归,想想还真是有点小激动呢(逃

        function getWindowOffset(element, direction) {
            var offset;
            switch (direction.toLowerCase()){
                case 'top':
                    offset = element.offsetTop;
                    if (element.offsetParent != null) {
                        offset += getWindowOffset(element.offsetParent, 'top');
                    }
                    break;
                case 'left':
                    offset = element.offsetLeft;
                    if (element.offsetParent != null) {
                        offset += getWindowOffset(element.offsetParent, 'left');
                    }
                    break;
                case 'right':
                    offset = element.offsetRight;
                    if (element.offsetParent != null) {
                        offset += getWindowOffset(element.offsetParent, 'right');
                    }
                    break;
                case 'bottom':
                    offset = element.offsetBottom;
                    if (element.offsetParent != null) {
                        offset += getWindowOffset(element.offsetParent, 'bottom');
                    }
                    break;
            }
            return offset;
        }