Comment passer les variables d'une fonction a une autre fonction?
pingounux
Messages postés2Date d'inscriptionjeudi 12 février 2009StatutMembreDernière intervention13 février 2009
-
12 févr. 2009 à 21:10
pingounux
Messages postés2Date d'inscriptionjeudi 12 février 2009StatutMembreDernière intervention13 février 2009
-
13 févr. 2009 à 16:35
Bonjours,
Je debute en javascript et j'ai des soucis pour transmettre des variables d'une fonction a une autre.
J'ai 2 fonctions : initCombo et initDialogBox() toutes deux dans un fichier dialog.js
J'instancie ma fonction initCombo de la sorte :
var combo1 = new initCombo(YAHOO.example.Data.menu.breakfasts, "bInput", "bContainer", "toggleB");
var combo2...
function initCombo(datasource, comboinput, combocontainer, combotoggle){
// Use to define datasource
this.data = datasource;
this.input = comboinput;
this.container = combocontainer;
this.toggle = combotoggle;
...}
et :
function initDialogBox(){....}
Et impossible de conserver la valeur des variables de la 1ere fonction dans la seconde.
A titre d'example, j'ai besoin de recuperer "datasource" dans ma fonction initDialogBox.
Si besoin, je peux proposer une copie du code.
Merci de votre aide
A voir également:
Comment passer les variables d'une fonction a une autre fonction?
pingounux
Messages postés2Date d'inscriptionjeudi 12 février 2009StatutMembreDernière intervention13 février 2009 13 févr. 2009 à 16:35
Merci, pour l'information, mais je me demande si je peux faire de la sorte avec mon script ?
J'utilise 2 fonctions, une pour creer une combobox avec autocompletion, et l'autre pour creer la dialog box.
Mon programme fonctionne de la facon suivante (note j'utilise YUI) :
Je cree des Objets Combo, via la fonction initCombo, ensuite j'utilise un handler qui me permet d'afficher une boite de dialogue quand on selectionne dans la combobox l'item (add-item), une fois la boite de dialogue ouverte, on peut ajouter des nouveaux items dans la combobox.
(la partie creation de la boite de dialogue est sous le controle de initDialogBox, mais j'ai besoin de recuperer les variables inscrites plus haut dans cette fonction).
Je me demande si je devrais pas incorporer ma fonction initDialogBox comme methode dans initCombo ?
Qu'en pensez-vous ?
Ce code marche bien pour faire plusieurs instances de ma combobox, via le code suivant :
var combo1 = new initCombo(YAHOO.example.Data.menu.breakfasts, "bInput", "bContainer", "toggleB");
var combo2...
Mais, j'ai des soucis pour la partie dialogbox, je dois aussi instancier plusieurs boites de dialogues avec mes combo (une par combo de creer). Je bloque sur cette partie.
Si quelqu'un a une idee
Voici une copie du code actuel ;
function initCombo(datasource, comboinput, combocontainer, combotoggle){
// Use to define datasource
this.data = datasource;
this.input = comboinput;
this.container = combocontainer;
this.toggle = combotoggle;
// Add to arraylist "Add-item" in first position
this.data.unshift("Add-item");
// Instantiate DataSources
var BDS = new YAHOO.util.LocalDataSource(this.data);
// Instantiate AutoCompletes
var BAC = new YAHOO.widget.AutoComplete(this.input, this.container, BDS, oConfigs);
BAC.resultTypeList = false;
// Part COMBOBOX
// My combobox
var bToggler = YAHOO.util.Dom.get(this.toggle);
var oPushButtonB = new YAHOO.widget.Button({
container: bToggler
});
var toggleB = function(e){
// YAHOO.util.Event.stopEvent(e);
if (!YAHOO.util.Dom.hasClass(bToggler, "open")) {
YAHOO.util.Dom.addClass(bToggler, "open")
}
// Is open
if (BAC.isContainerOpen()) {
BAC.collapseContainer();
}
// Is closed
else {
BAC.getInputEl().focus(); // Needed to keep widget active
setTimeout(function(){ // For IE
BAC.sendQuery("");
}, 0);
}
// Control ComboBox Toggler
BAC.containerCollapseEvent.subscribe(function(){
YAHOO.util.Dom.removeClass(bToggler, "open")
});
// Select and Add-item
BAC.itemSelectEvent.subscribe(myHandler);
}
oPushButtonB.on("click", toggleB);
//}
// Part HANDLER
// Define an event handler to populate a hidden form field
// when an item gets selected
var myHandler = function(sType, aArgs){
this.myAC = aArgs[0]; // reference back to the AC instance
this.elLI = aArgs[1]; // reference to the selected LI element
this.oData = aArgs[2]; // object literal of selected item's result data
if (this.oData.name == "Add-item") {
dialog1.show(true);
}
};
}
// Add and control DialogBox
//YAHOO.util.Event.onDOMReady(initDialogBox);
// Part DIALOGBOX
// define the init function which creates the Dialog Box
function initDialogBox(){
// Validate the entries in the form to require that new item is entered and no exist
dialog1.validate = function(){
var data = this.getData();
var arrayaddlist = data.newitem;
for (var i = 0; i < datasources.length; i++) { if (data.newitem datasources[i].name || data.newitem datasources[i]) {
alert("Your new item already exist.");
formReset();
return false;
}
}
if (data.newitem == "") {
alert("Please enter your new item.");
return false;
}