我在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功能,我需要保持原来的高度,所以我可以再回去。
有什么想法吗?谢谢
答案 0 :(得分:0)
现在,与某些人的答案相比,评论是完全没有建设性的,我认为你的真实问题是关于这个小曲子:
extend: function(el, opt){
for(var name in opt) el[name] = opt[name];
return el;
}
为什么它返回undefined?它没有......你的问题在于其他地方,因为这有效:
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();
答案 1 :(得分:0)
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);
},
瞧!!非常感谢你的回答!