2013-09-30 70 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