Je semble avoir des problèmes de portée avec l'utilisation de addEventListener
à l'intérieur d'une fonction anonyme immédiate.
A l'intérieur de l'écouteur d'événement, je crée une instance d'une "classe" Javascript qui est construite en dehors de la fonction immédiate (en utilisant un constructeur et prototype
). En essayant de garder les bonnes pratiques, j'ai voulu utiliser la fonction immédiate pour éviter les variables globales, et addEventListener
pour éviter d'utiliser le Javascript intégré (le séparant ainsi de html).
Alors, comment puis-je le faire correctement sans avoir de problèmes de portée, et quelles sont les bonnes pratiques pour le faire? problèmes de portée avec les événements: Quelles sont les bonnes pratiques pour éviter Javascript en ligne?
Voici mon html:
<html>
<head>
<title>asdf</title>
</head>
<body>
<input type = "text" id = "userInput" />
<input type = "button" id = "submitButton" value = "submit" />
<script type = "text/javascript" src = "asdf.js" />
</body>
</html>
... et voici mon Javascript asdf.js
(qui est pas de travail):
// constructor for object-oriented processing of the user input
function Statement(expression)
{
this.expression = expression;
}
// instance method
Statement.prototype.checkSyntax = function()
{
var newExp = this.expression;
return newExp;
};
// immediate anonymous function
(function()
{
var submitButton = document.getElementById("submitButton");
// event listener for the submit button
submitButton.addEventListener("onclick", function(event)
{
var userInput = document.getElementById("userInput");
// creating a new object with constructor above
var expr = new Statement(userInput);
// calling instance method of the "class" Statement
alert(expr.checkSyntax());
// disable the button after first use
event.stopImmediatePropagation();
}, false);
})(); // end of immediate anonymous function
Vous peut définir la classe à l'intérieur de la fonction immédiate, en créant effectivement une portée fermée. –
Je ne vois aucun problème de portée. Quelles erreurs obtenez-vous? – Bergi
Je ne peux m'empêcher de rire de @ Soupd'Campbells commentant la question de Ian _Cambell_. Laisser votre soupe faire des commentaires sur votre propre question semble discutable;) – jahroy