window.onload没有全局变量

Adr*_*sim 5 javascript

我正在尝试使用没有全局变量的windows.load.

HTML代码:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>Test</title>
    <link rel="stylesheet" href="main.css">
    <script type="text/javascript" src="script.js"></script>
</head>
<body>

<form>
    Name: <input type="text" id="txt1"><br><br>
    <input type="button" value="Check Input" id="b1">
</form>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

JavaScript全局变量代码:

/*jslint browser: true*/

var myButton;

window.onload = function () {
    "use strict";
    myButton = document.getElementById("b1");
    myButton.addEventListener("click",alertMM);
};

function alertMM() {
    "use strict";
    window.console.log(myButton.value);
}
Run Code Online (Sandbox Code Playgroud)

最后没有全局变量代码的NOT WORKING:

/*jslint browser: true*/

var myNS = {
    myButton: undefined,
    //
    setUp: function () {
        "use strict";
        myNS.myButton = document.getElementById("b1");
        myNS.myButton.addEventListener("click", alertMM);
    }
};

window.onload = myNS.setUp();

function alertMM() {
    "use strict";
    window.console.log(myNS.myButton.value);
}
Run Code Online (Sandbox Code Playgroud)

我想停止使用全局变量的原因是我担心它会与未来的代码冲突.

提前致谢

阿德里安

Tou*_*ffy 5

在:

window.onload = myNS.setUp();
Run Code Online (Sandbox Code Playgroud)

当你定义window.onload回调时,你应该为它自己分配函数(只是myNS.setUp),以便稍后调用它.你的代码所做的是立即调用函数并分配结果.