调用自调用函数内定义的函数

时间:2015-02-13 21:20:38

标签: javascript

我有一个自我调用函数来保存我的所有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],而不是我的预期。

我对自我调用函数中的函数感到困惑。

3 个答案:

答案 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;
})();