我有一个名为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;
};
答案 0 :(得分:0)
除非您使用prompt
,conform
或alert
,否则请求用户输入将始终是异步的。考虑到这一点,您可以像处理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];
}