调用自调用函数中定义的函数
call a function defined inside self-invoking function
我有一个自调用函数来保存我所有的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);
}
})();
但是当我点击created按钮时,myfunction()就找不到了。消息是:
ReferenceError:找不到变量: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],不是我所期望的。
我对自调用函数中的函数有点困惑。
不要将函数作为字符串传递,因为它是在找不到函数的上下文中求值的,只需执行
btn.addEventListener('click', myfunction);
如果我理解你的问题,如果你想使用另一个onload函数或某个foo作为onload函数。
function foo(){
some code here for foo function
bar();
}
function bar() {
some code here for bar function
}
导出您的函数,以便您可以从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;
})();
相关文章:
- 如何从模块链中调用函数.导出到节点中
- 调用函数内部的函数
- 在javascript中调用c函数
- DropDownListFor赢得't在更改时调用函数
- Javascript页面调用函数
- 在动画结束之前调用函数
- 允许父窗口在其不同域的子iframe上调用函数
- 运行Infinite Scroll后调用函数时出现问题
- JavaScript:在调用函数的文本输入上按enter键
- 使用大括号和不使用bracs调用函数的区别
- javascript在事件上调用函数
- 从index.html调用函数,该函数无限循环
- 从带参数的字符串变量调用函数中的函数
- 为什么 JS 不在滚动时调用函数
- 是否可以在不更改上下文的情况下调用函数.apply
- 如何在ES6类中使用参数调用函数
- AngularJS:调用函数时编号不更新
- JavaScript中的立即调用函数表达式(IIFE)-传递jQuery
- 在JavaScript中调用函数时自定义此选项
- 调用函数中声明的变量