2009-11-27 3 views
0

J'ai une méthode d'un objet appelé update qui génère un entier, et si elle est différente de la valeur de la variable region, l'affecte à region. Si l'entier est le même que region, l'utilisateur sélectionne une valeur dans un menu déroulant <select>.obtenir la valeur d'un menu déroulant de sélection à partir d'une fonction

J'essaie de comprendre comment obtenir la valeur du <select> dans la fonction.

<form> 

Sélectionnez une région du Nord-Est Sud- Nord Centre Sud Central Plains nord-ouest sud-ouest

//Destination object 
var destination= function(spec) { 
    spec= spec||{}; 

    var that= {}; 




that.update= function(newDest) { 
    function roll() { 
    return Math.floor(Math.random()*6)+Math.floor(Math.random()*6)+Math.floor(Math.random()*2)*11; 
    }; 
    newDest= newDest||{}; 

    //newDest is event 
    newRegion=newDest.target.value; 

    //newDest is empty object 
    newRegion= newDest.region||codes[roll()][0]; 

    if (spec.region=== newRegion) { 
    //ask user for new region 
    //how do i use event handlers here? 
    }; 

    //set new region 
    spec.region= newRegion; 

    //set new city 
    spec.city= newDest.city||codes[roll()][newRegion]; 
    }; 

    return that; 
}; 

Répondre

0

Sauf si vous utilisez prompt, conform ou alert, demandant l'entrée de l'utilisateur sera toujours asynchrone. Dans cet esprit, vous pouvez traiter cette interaction comme vous le feriez pour une requête AJAX afin que le gestionnaire d'événements devienne synonyme du gestionnaire de réponse AJAX.

if (spec.region === newRegion) { 
    // 1. Display a <select> in the current context or 
    // launch some sort of dialog containing the <select>. 
    // 2. Attach an event handler to that <select> that is closed 
    // over in this scope, or is a method of `destination` and 
    // update `spec.region` and `spec.city` 
} else { 
    //set new region 
    spec.region= newRegion; 

    //set new city 
    spec.city= newDest.city||codes[roll()][newRegion]; 
} 
Questions connexes