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 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器