2013-09-30 28 views
0

我希望这仍然是有道理的。我没有与我的代码,但我想知道我怎么能做到这一点。问题出在“onclick=\"thatThing.doSmthg();\"”。onclick和对象的身份

它导致“thatThing未定义”。

谢谢!

var oneThing = new Thing(); 

letsDoSmthg(oneThing); 

letsDoSmthg(thatThing){ 
    document.getElementById("fezok").innerHTML+="<input type=\"button\" value=\"Do smthg\" onclick=\"thatThing.doSmthg();\">"; 
} 

function Thing(){ 
    this.variable1=0; 
} 
Thing.prototype={ 
    doSmthg: function(){ 
     this.variable1=1534; 
    }, 
+1

您应该创建实际的DOM元素并使用'addEventListener()'传递一个带有闭包的函数。 – SLaks

回答

1

不要使用字符串来创建HTML。使用元素。

var letsDoSmthg = function(thatThing) { 
    var button = document.createElement('input'); 
    button.type = 'button'; 
    button.onclick = function() { 
     thatThing.doSmthg(); 
    }; 

    document.getElementById("fezok").appendChild(button); 
}; 
+0

如果我不想使用dom元素,该怎么办? – user2090805

+0

@ user2090805那么不要做网站开发? – jbabey

+0

我改用dom元素......但我的意思是出于好奇,如果dom不存在,我该怎么做呢? – user2090805