J'ai le code suivant dans JavaScript:
jQuery(document).ready(function(){ var actions = new Object(); var actions; actions[0] = 'create'; actions[1] = 'update'; for (key in actions) { // Dialogs var actions[key]+Dialog = function(){ $('#'+actions[key]+'dialog').dialog('destroy'); $('#'+actions[key]+'dialog').dialog({ resizable: false, height:600, width:400, modal: true, buttons: { Cancel: function() { $(this).dialog('close'); } } }); }; } });
5 Réponses :
Comme ceci: Toutefois, car les fonctions JavaScript capturent des variables par référence, votre code ne fonctionnera pas comme prévu. Par exemple: P>
Vous devez définir la fonction interne à l'intérieur d'une fonction distincte de sorte que chacun obtient une touche code> distincte code> variable (ou paramètre). P> var actionNames = [ 'create', 'update' ]; //This creates an array with two items
for (var i = 0; i < actionNames.length; i++) {
this[actionNames[i] + 'Dialog'] = createAction(actionNames[i]);
}
-1. Avez-vous lu la question? Je souhaite un nom de fonction variable, pas une clé de réseau variable.
Les variables variables sont sales. Ils ne sont que des méchantes syntaxes qui atteignent le même effet que d'utiliser un tableau ou un objet, mais avec moins d'organisation. Pourquoi vous opposez-vous à organiser les fonctions d'un objet ou d'une matrice?
@Alexander: Vous devez le mettre à l'intérieur d'un objet. Si vous souhaitez créer des globaux, vous pouvez les mettre à l'intérieur de la fenêtre code>.
Ma tâche est de faire des fonctions avec les noms de mise à jour des noms, créatedialog. Pas d'autres façons.
Vous aurez besoin d'une référence à l'objet de la portée dans laquelle vous souhaitez créer les fonctions. Si c'est la portée globale, vous pouvez utiliser fenêtre code>:
JavaScript Global Scope est la fenêtre, vous pouvez donc écrire:
var funcName='varfuncname'; window[funcName]=function() { alert('HI!'); }
Vous devez combiner les réponses de Slaks 'et Rotora: puisque vous l'exécutez dans le gestionnaire d'événements du document, la variable "Cette" référence ferait référence au document, et non au fenêtre. p> p>
Je pense que vous essayez de faire quelque chose que vous n'avez pas besoin de faire en JavaScript. En PHP, la fonction de fonction est un peu d'un kilométrage. En JavaScript, il est élégant et sans douleur.
Comment comptez-vous appeler ces fonctions plus tard? Je suppose que vous avez ces noms de fonction à votre code HTML dans les attributs 'OnClick'. JavaScript de codage rigide dans votre HTML via le Ceci suppose que vous avez Un meilleur moyen de le faire serait de créer les fonctions que vous les liez dans les événements, ne les attribuez jamais à des variables. : p> Cela rendra votre JavaScript et votre HTML plus petit et plus propre. P> p> On * code> attributs est une mauvaise idée. strong> Si c'est ce que vous faites, vous devez créer des variables dans la portée globale (une autre pratique mieux évitée). Dans le navigateur, l'objet global est
fenêtre code>. Si vous définissez une propriété sur
fenêtre code>, la fonction sera disponible globalement: p>
onclick code> Attributs de votre HTML qui correspond aux noms de fonctions que vous créez. P>