代码之家  ›  专栏  ›  技术社区  ›  RSilva

在for循环中触发onchange事件只运行一次

  •  0
  • RSilva  · 技术社区  · 10 年前

    我有一个页面,它创建了与关联事件相关联的下拉对象。

    当用户运行时,onchange事件对所有对象都非常有效。 我的问题是当我以编程方式调用“onchange”时。它只运行一次。我就是这样做的:

    for (i = 0; i < me.datasource.DocLines.length; i++) {
        data = me.datasource.DocLines[i];
        x = $('#subproduct_' + data.Code);
        x.val(data.Value);
        x.change();
    }
    

    我以编程方式进行此操作,因为我要从数据库中绑定下拉值,并且需要重新创建计算以向用户显示计算值。

    循环只运行一次。在触发onchange事件后,代码执行退出循环,我不知道为什么。 我已经检查了me.datasource.DocLines。长度总是>1,这意味着循环应至少运行两次。

    有什么线索说明为什么会发生这种情况吗?

    编辑 更多信息:

    这是我将函数与下拉控件关联的方式

         for (i = 0; i < dbdata.length; i++) {
                if ((dbdata[i].Provider) == "False") { //create dropdownboxes events 
                    if ((dbdata[i].Dimension) != "True") {
    
                        $('#subproduct_' + dbdata[i].Code).change({
                            me: me
                        }, doSomething);
                    }
               }
         }
        //....
    

    这个“doSomething”只运行一次。我可以通过设置断点来检查它。

    1 回复  |  直到 10 年前
        1
  •  0
  •   RSilva    10 年前

    通过将“i”迭代器更改为一个新变量,我的问题得到了解决。在“doSomething”函数中也使用了一个“i”变量。