有没有人告诉我这段代码有什么问题

时间:2012-04-12 14:22:35

标签: javascript

function ge(id){
    this.id=id;
    this.d=document;
    this.w=window;
    return document.getElementById(id);
}
ge.prototype={
    set_in:function(value){
        this.innerHTML=value;
    },
    getIn:function(){
        return document.getElementById(this.id).innerHTML;
    },
    foc:function(){
        document.getElementById(this.id).focus();
    }
}

我想做的是,如果我调用ge('id')。getIn()将导致该元素的innerHTML

2 个答案:

答案 0 :(得分:2)

您在该构造函数中返回DOM Node。我猜你用它作为构造函数,所以你覆盖实际应该返回的Object

跳过

return document.getElementById(id);

你很好。您可以将该节点引用存储在某个this.myRef值中。


删除return语句后,您需要创建一个实例。像

var myGE = new ge('id');

然后你终于可以打电话了

myGE.getin();

答案 1 :(得分:1)

您需要调用new ge("header").getIn();而不仅仅是ge("header").getIn(); - 或创建另一个返回ge新实例的函数 - 例如:

function newge(id) {
    return new ge(id);
}
function ge(id){
    this.id=id;
    this.d=document;
    this.w=window;
    return this; //document.getElementById(id);
}
ge.prototype={
    set_in:function(value){
        this.innerHTML=value;
    },
    getIn:function(){
        return document.getElementById(this.id).innerHTML;
    },
    foc:function(){
        document.getElementById(this.id).focus();
    }
}
newge("header").getIn();