0

私はjavascriptでこのコードを持っています:

var object = {
    get: function(id){
        sel = document.getElementById(id);
        sel.orig = {};

        ...

        return object.extend(sel, object);
    }

    extend: function(el, opt){
        for(var name in opt) el[name] = opt[name];
        return el;
    }
}

そして別のjsで私は持っています

var Multi = {
    set: function(){
        if(!this.orig["height"]) this.orig["height"] = this.offsetHeight;

        ...

        return this;
    }
}

object.extend(object,Multi);

そして私はそれをこのように呼びます:

object.get('myId').set();

しかし、 "set"メソッドでは、プロパティthis.orig ["height"]は常に未定義であるため、常に値が変更されます。これは考えられません。最初にキャプチャする必要があるのは、 FxフレームワークとそれはslideUp関数用です。元の高さを維持する必要があるので、再び戻ることができます。

何かアイデアはありますか?ありがとうございました

4

2 に答える 2

0

さて、一部の人々の回答のコメントが完全に非建設的であるのとは対照的に、私はあなたの本当の質問がこの小さなくだらないことに関すると思います:

  extend: function(el, opt){
        for(var name in opt) el[name] = opt[name];
        return el;
  }

そしてなぜそれは未定義を返すのですか?これは機能するため、問題は他の場所にあります。

var object = {
    get: function(id) {
        el = document.getElementById(id);
        el.orig = {};
        return object.extend(el,object);
    },
    extend: function( el, opt ) {
        for(var name in opt) el[name] = opt[name];
        return el;
    }   
}

var Multi = {
    set: function() {
        if(!this.orig['height']) this.orig['height'] = this.offsetHeight;
        console.log( this.orig['height'] ); // if the value of offsetHeight itself is not undefined, it is what is returned.
    }
}
object.extend(object,Multi);
object.get('myId').set();
于 2010-10-13T03:42:17.997 に答える
0

ねえ、コメントと全体的な答えに感謝しますQuickredfox !! 私はこの部分で問題を見つけました:

 get: function(id) {
    el = document.getElementById(id);
    el.orig = {};
    return object.extend(el,object);
},

私はこれに変更しました:

 get: function(id) {
    el = document.getElementById(id);
    if(!el.orig) el.orig = {};
    return object.extend(el,object);
},

そして出来上がり!ご回答どうもありがとうございました!

于 2010-10-15T13:11:55.213 に答える