steeeeps 2011-10-31 09:33
浏览 215
已采纳

谢了一个js类,但是在使用过程中出现了点问题,属性访问不了,请大家帮我看一下

function Drag(nodename){
this.node = document.getElementById(nodename);
this.node.style.position = "absolute";
console.log(this.node); //输出为div1...
addEventHandler(this.node, "mousedown", this.start);
console.log(this.node); //输出为div1...
}

        Drag.prototype.start = function(event){
                        console.log(this.node);  [color=red]//输出为undefined???[/color]
          /*  this._startPosition = {
                left: this.node.offsetLeft,
                top: this.node.offsetTop
            };*/
            addEventHandler(this.node, "mousemove", this.move);
            addEventHandler(this.node, "mouseup", this.stop);

        };
        Drag.prototype.move = function(event){
            if (this.node._drag) 
                clearInterval(this.node._drag);
            var nodeStyle = this.node.style;
            var posArr = ["left", "top"];
            var position = [{
                left: event.clientX,
                top: event.clientY
            }];
            this.node._drag = setInterval(function(){
                for (var i = 0; i < posArr.length; i++) {
                    if (Math.round(this._startPosition[posArr[i]]) == position[posArr[i]]) {
                        for (var i = 0; i < posArr.length; i++) {
                            nodeStyle[posArr[i]] = position[posArr[i]] + "px";
                        }
                        clearInterval(node.move);
                    }
                    else {
                        this._startPosition[posArr[i]] += (position[posArr[i]] - this._startPosition[posArr[i]]) * speed;
                        nodeStyle[posArr[i]] = this._startPosition[posArr[i]] + "px";
                    }
                }
            }, 50);
        };
        Drag.prototype.stop = function(event){
            removeEventHandler(this.node, "mousemove", this.move);
        };

        var addEventHandler = function(target, eventType, func){

            console.log(target);  //输出为div1...
            if (target.addEventListener) {
                target.addEventListener(eventType, func, false);
                console.log("out add");
                                    console.log(target);  //输出为div1...
            }
            else 
                if (target.attachEvent) {
                    target.attachEvent("on" + eventType, func);
                }
                else {
                    target[eventType] = func;
                }

            console.log(target);  //输出为div1...
        };
        var removeEventHandler = function(target, eventType, func){
            if (target.removeEventListener) {
                target.removeEventListener(eventType, func, false);
                console.log("out remove");
            }
            else 
                if (target.detachEvent) {
                    target.detachEvent("on" + eventType, func);
                }
                else {
                    target[eventType] = null;
                }
        }; 

标注红色的地方访问不到属性,请大家帮忙,谢谢。

  • 写回答

2条回答

  • yy1230 2011-10-31 09:42
    关注

    this 有问题

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划