首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获得原始变量值

获得原始变量值
EN

Stack Overflow用户
提问于 2016-03-08 10:16:03
回答 1查看 127关注 0票数 0

我试图在回调函数中使用变量值,但是当写入函数时无法获得变量的原始值。

代码语言:javascript
复制
for (i=0; i<2; i++) {
    if ($.type(picker[i]) == "object") {
        var id = picker[i].$root[0].id;
        picker[i].on({
            set: function() {
                alert("#" + id + " .picker__holder");
            },
        });
        // other code..
    }
}

这段代码应该两次遍历选择器对象,其中id值首先是"datepicker“,在第二次运行时是"datepicker--2”,但是当回调被调用时,id总是第二个值“Datepicker-2”,对于picker.on()回调,我需要它成为第一个值("datepicker")。

我认为这是因为在执行回调代码时读取了变量的值,并且到那时它有了最后一个值。

什么是合理的解决办法呢?

最好的

阿拉里

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-08 10:18:02

您需要将内部异步调用重构为函数。

代码语言:javascript
复制
for (i=0; i<2; i++) {
    if ($.type(picker[i]) == "object") {
        var id = picker[i].$root[0].id;
        // other code..
        asynhCall(picker, i, id);
    }
}
function asynhCall(picker, i, id)
{
        picker[i].on({
            set: function() {
                alert("#" + id + " .picker__holder");
            },
        });
}

这是因为在执行异步回调处理程序时,只有id才会使用最后一个值(因为有事件循环模型)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35864588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档