Sto cercando di utilizzare windows.load senza variabile globale.window.onload senza variabile globale
Il codice 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>
Il codice variabile globale 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);
}
Ed infine il non funziona senza codice variabile globale:
/*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);
}
La ragione per cui voglio smettere di usare variabile globale è che ho paura che sarà in conflitto con il codice di futuro.
Grazie in anticipo
Adrian
BTW, si potrebbe usare questo ' .myButton = 'in alternativa a' myNS.myButton = '. Probabilmente una questione di preferenze personali in questo caso ... –
puoi usare il pattern [IIFE] (http://benalman.com/news/2010/11/immediately-invoked-function-expression/) e avvolgere tutto in un funzione di autoesecuzione, che imposta un ambito interno e non consente alle variabili di penetrare nello scope globale – yoavmatchulsky
oppure è possibile definire 'alertMM()' all'interno della funzione onload e utilizzare lo stesso oggetto 'myButton' – yoavmatchulsky