Próbuję użyć windows.load bez zmiennej globalnej.window.onload bez zmiennej globalnej
Kod 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>
Kod JavaScript globalny kod zmienny:
/*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);
}
I wreszcie NIE DZIAŁA bez globalnej kodem zmiennym:
/*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);
}
Dlatego, że chcę przestać używać zmiennej globalnej jest to, że obawiam się, będzie to kolidować z przyszłymi kodu.
góry dzięki
Adrian
BTW, można użyć tego ' .myButton = 'jako alternatywa dla' myNS.myButton = '. Prawdopodobnie jest to sprawa osobistych preferencji w tym przypadku ... –
możesz użyć wzoru [IIFE] (http://benalman.com/news/2010/11/immediately-invoked-function-expression/) i zawijać wszystko w funkcja self executing, która ustawia wewnętrzny zasięg i nie pozwala, by zmienne wyciekały do globalnego zakresu – yoavmatchulsky
lub można zdefiniować 'alertMM()' wewnątrz funkcji onload i użyć tego samego obiektu 'myButton' – yoavmatchulsky