我有一个功能,它有另一个功能。 main函数中有一个onclick事件,我希望它调用内部函数。但是,当我单击该元素时,它表示该函数未定义。 onclick事件处于for循环中。这是代码:
function renk(){
function metinRenginiDegistir(boya){
//seciliMetinDegistir("<font color='"+boya+"'>"+seciliMetin()+"</font>");
alert("a");
}
var sagic;
var renkler=new Array("#000000","#FF0000","#00FF00","#0000FF","#FFFF00","#00FFFF","#FF00FF","#666666");
var adlar=new Array("Siyah","Kırmızı","Yeşil","Mavi","Sarı","Turkuaz","Magenta","Gri");
for(i=0;i<renkler.length;i++){
sagic=sagic+"<tr><td><div **onclick='metinRenginiDegistir(this.style.background)'** style='cursor:pointer;width:28px;height:28px;background:"+renkler[i]+";margin-left:17px;'></div></td><td>"+adlar[i]+"</td><td>"+renkler[i]+"</td></tr>";
}
sagic="<center><table id='renklerinTablosu'><tr><th>Önizleme </th><th>Renk Adı </th><th>Renk Kodu</th></tr>"+sagic+"</table></center>";
sag.innerHTML=sagic.replace("undefined","");
//document.getElementById("renklerinTablosu").getElementsByTagName("div").onclick=function(){alert("a");}
// onclick='metinRenginiDegistir(this.style.background)'
}
答案 0 :(得分:2)
他们是正确的,你不能达到metinRenginiDegistir(),因为它不在范围内。你能做什么,重新写'function metinRenginiDegistir()'为'this.metinRenginiDegistir = function(){}。bind(this);'。现在,将变量'onclick'设置为'this.metinRenginiDegistir()',(仅当你在'renk()'中设置它)或者在'renk'()'之外设置一个变量等于renk的实例()并使用:
var renkInstance = new renk();
...onclick = renkInstance.metinRenginiDegistir;
你不能从'renk()'之外到达'metinRenginiDegistir',但是你可以使用你的'renk()',renkInstance的实例从'renk()的范围到达'metinRenginiDegistir'。