我理解如何将匿名函数作为函数参数传递:
function FUNC(value1,callback) {
alert(value1);
callback();
}
function LOAD() {
// this function gets called when the page initially loads
var UN = document.getElementById('username');
FUNC('some value', function(){alert('user name: ' + UN.value)});
}
但我遇到的问题是,如果函数as-a-parameter也有一个变量用于回调:
{{1}}
这会产生" ReferenceError:UN未定义"错误。我假设这是因为FUNC()的内部不知道来自LOAD()的变量UN。我怎样才能做到这一点?在某处使用.bind,.call,.apply?我找到了以下链接,但不确定它们是否适用。
答案 0 :(得分:0)
所以在玩了几个小时的代码后,我意识到其中一个函数是添加回调,如:
...snip...
HTML += "<input type='button' id='btnOK' value='OK' onClick=\"dialog("+cb2+");\" />";
...snip...
document.getElementById('test').innerHTML = HTML;
这会导致问题,因为您无法向字符串添加函数。相反,正确的方法是执行以下操作:
...snip...
HTML += "<input type='button' id='btnOK' value='OK' />";
...snip...
document.getElementById('test').innerHTML = HTML;
document.getElementById('btnOK').onclick=function(){dialog(cb1)};
我只是想跟进,如果有人偶然发现了这个问题,他们至少会找到我找到的解决方案。