расширить свойства в JavaScript - PullRequest
0 голосов
/ 13 октября 2010

у меня есть этот код в 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, мне нужно сохранить исходную высоту, чтобы я мог вернуться обратно.

Есть идеи, пожалуйста? спасибо

Ответы [ 2 ]

0 голосов
/ 15 октября 2010

эй, спасибо за комментарии и в целом за ответ 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);
},

и вуаля !! большое спасибо за ваш ответ!

0 голосов
/ 13 октября 2010

Теперь, в отличие от ответов некоторых людей комментариев, которые совершенно не конструктивны, я предполагаю, что ваш истинный вопрос касается этой маленькой пустышки:

  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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...