Javascript 函数中的Onclick事件无法调用嵌套函数

Javascript 函数中的Onclick事件无法调用嵌套函数,javascript,Javascript,我有一个函数,其中有另一个函数。在main函数中有一个onclick事件,我希望它调用内部函数。但是,当我单击元素时,它表示函数未定义。onclick事件位于for循环中。代码如下: function renk(){ function metinRenginiDegistir(boya){ //seciliMetinDegistir("<font color='"+boya+"'>"+seciliMetin()+"</font>")

我有一个函数,其中有另一个函数。在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&nbsp;&nbsp;</th><th>Renk Adı&nbsp;&nbsp;</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)'
    }
函数renk(){
函数METINRENGISIDGISTIR(boya){
//seciliMetinDegistir(“+seciliMetin()+”);
警报(“a”);
}
矢状变种;
var renkler=新数组(“000000”、“FF0000”、“00FF00”、“0000FF”、“FF00”、“00FF00”、“00FFFF”、“00FFFF”、“666666”);
var adlar=新阵列(“Siyah”、“Kırmızı”、“Yeşil”、“Mavi”、“Sarı”、“Turkuaz”、“洋红”、“Gri”);

对于(i=0;i它们是正确的,您无法访问metInEngineGistir(),因为它不在范围内。您可以做的是将“function metInEngineGistir()”重新编写为“this.metInEngineGistir=function(){}.bind(this);”。现在,将变量“onclick”设置为“this.metInEngineGistir()”(仅当您在“renk()”内进行设置时)或者,在“renk”()之外,设置一个等于renk()实例的变量,并使用该变量:

var renkInstance = new renk();

...onclick = renkInstance.metinRenginiDegistir;

无法从“renk()”外部访问“metInEngineIDegistir”,但可以使用“renk()的实例”从“renk()的作用域访问“metInEngineIDegistir”“,renkInstance.

我认为您无法从renk的函数作用域之外访问“metinEngineGistri”函数。最好将该函数移到另一个作用域。但事件在renk函数中。请参见for循环。确切地说。您可以在
renk()的内部定义
metinEngineGistir()
。这就是问题所在。
希望它在全局范围内,与
renk
@zencimusa处于同一级别。您正在创建将函数附加到循环中事件的HTML,而不是在那里实际调用函数。现在它工作了,谢谢