对不起标题-我想不出一种表达方式。
这是场景:
我有一个构建元素的函数:
buildSelect(id,cbFunc,...)
在 buildSelect 里面它这样做:
select.attachEvent('onchange',cbFunc);
我还有一个数组:
var xs = ['x1','x2','x3'...];
鉴于所有这些,我有一些代码可以做到这一点:
for(var i = 0; i < xs.length; i++)
{
buildSelect(blah,function(){ CallBack(xs[i],...) },...);
}
问题是,当 onchange 被其中一个选择触发时,它正确地转到 CallBack() 但第一个参数不正确。例如,如果我更改第三个选择,我希望 CallBack() 用 xs[2] 调用,而不是我得到一些不同的东西,比如 xs[3] 或其他东西。
如果我稍微修改一下:
for(var i = 0; i < xs.length; i++)
{
var xm = xs[i];
buildSelect(blah,function(){ CallBack(xm,...) },...);
}
我仍然在 CallBack() 中得到不正确的值。有些东西告诉我这是范围/关闭相关的,但我似乎无法弄清楚是什么。
我只是希望第一个选择调用 CallBack for onchange,第一个参数为 xs[0],第二个选择为 xs[1],依此类推。我在这里做错了什么?
我应该澄清 xs 是一个全局变量。
谢谢