首页 > 解决方案 > FOR 循环和数组问题

问题描述

我正在使用 Adob​​e Livecycle Designer ES4 创建一些报告。基于 XML 的尝试填表。我对数组有问题。我在 for 循环中将数据推送到数组中。下面是我的代码示例:

  1. 结果 - 空白文本框

    var print_data = xfa.record.containerPrintingData;
    var sfcArray = [];
    
    for (var i = 0; i < 10; i++) {
        sfc = print_data.resolveNode("sfcPrintingData["+ i +"]").sfc.value;    
        sfcArray.push(sfc);  
    };
    
    this.rawValue = sfcArray.toString();

  2. 结果 - 获取所有项目

    var print_data = xfa.record.containerPrintingData;
    var sfcArray = [];
    
    for (var i = 0; i < 10; i++) {
        sfc = print_data.resolveNode("sfcPrintingData["+ i +"]").sfc.value;    
        sfcArray.push(sfc);
        this.rawValue = sfcArray.toString();
    }

  3. 结果 - 获得第二个项目 x 10

    var print_data = xfa.record.containerPrintingData;
    var sfcArray = [];
    
    for (var i = 0; i < 10; i++) {
        sfc = print_data.resolveNode("sfcPrintingData[1]").sfc.value;    
        sfcArray.push(sfc);
        this.rawValue = sfcArray.toString();
    }

为什么第一个例子不起作用而第二个工作正确?我需要在另一个循环中使用这个数组。如何解决?

标签: javascriptlivecycle-designer

解决方案


因为,如果它有 2 个项目,并且您将其循环 10 个。

发生的事情是,当this.rawValue = sfcArray.toString();在循环内时, this.rawValue 会更新 2 次。第一次会有一个项目。第二次 2 项。对于下一次迭代,没有第 3 项。所以代码因错误而中断。但this.rawValue仍然有2个项目。

其中,当this.rawValue = sfcArray.toString();在循环之外时,代码因错误而中断并且其中this.rawValue没有任何项目。


推荐阅读