我有一个自我调用函数来保存我的所有javascript代码。 (如书中所示)
在这个功能里面,我创建了一个按钮,这个按钮有 的onclick =" myfunction的()"属性集。像这样:
(function() {
var x = 4;
var btn = document.createElement('button');
btn.type = "button";
btn.style.width = "100";
btn.textContent = "click me";
btn.id = "bid";
btn.setAttribute('onclick', "myfunction()");
document.body.appendChild(btn);
function myfunction() {
alert(x);
}
})();
但是当我点击创建按钮时,无法找到myfunction()。消息是:
ReferenceError:无法找到变量:myfunction
然后我把myfunction()移出来了:
(function() {
var x = 4;
var btn = document.createElement('button');
btn.type = "button";
btn.style.width = "100";
btn.textContent = "click me";
btn.id = "bid";
btn.setAttribute('onclick', "myfunction()");
document.body.appendChild(btn);
})();
function myfunction() {
alert(x);
}
现在它可以找到myfunction(),但是提醒的x值是这样的 [object HTMLSelectElement],而不是我的预期。
我对自我调用函数中的函数感到困惑。
答案 0 :(得分:4)
不要将该函数作为字符串传递,因为它在无法找到函数的上下文中进行评估,只需执行
btn.addEventListener('click', myfunction);
答案 1 :(得分:0)
如果我理解你想要使用的另一个函数是onload还是foo是onload函数。
function foo(){
some code here for foo function
bar();
}
function bar() {
some code here for bar function
}
答案 2 :(得分:0)
导出您的功能,以便您可以从HTML中调用它。
(function() {
var x = 4;
var btn = document.createElement('button');
btn.type = "button";
btn.style.width = "100";
btn.textContent = "click me";
btn.id = "bid";
btn.addEventListener('click', myfunction);
document.body.appendChild(btn);
function myfunction() {
alert(x);
}
window.myfunction = myfunction;
})();