从函数中获取选择下拉列表的值

时间:2009-11-27 21:36:31

标签: javascript javascript-events event-handling

我有一个名为update的对象的方法,它生成一个整数,如果它与region变量的值不同,则将其赋给region。如果整数与region相同,则用户从<select>下拉菜单中选择一个值。

我正在试图找出如何将<select>的值放入函数中。

<form>

    选择一个地区     东北     东南     中北部     中南部     平原     西北     西南

   

 //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;
 };

1 个答案:

答案 0 :(得分:0)

除非您使用promptconformalert,否则请求用户输入将始终是异步的。考虑到这一点,您可以像处理AJAX请求一样处理此交互,以便事件处理程序成为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];
}