使用JavaScript循环访问APEX应用程序项

时间:2018-03-07 06:29:37

标签: javascript oracle-apex

我正在使用Oracle APEX,我有一个交互式报告,以表格形式显示列和行。在报告中,我使用了" apex_item" {对于大多数可修改的列,每个都有它的item_id}。

现在,有三列,一列具有预定义的只读值,一列用于输入新值,另一列用于显示两者之间的差异。

我无法编写javascript代码,无法对报告中与这3列对应的所有行进行上述操作。它只适用于我的第一行。

以下是示例示例:

1. APEX_ITEM.TEXT(9,abc, p_item_id=>'p09') 
2. APEX_ITEM.TEXT(9,xyz, p_item_id=>'p10')
3. APEX_ITEM.TEXT(9,def,p_attributes =>'readonly', p_item_id=>'p11')

-- document.getElementById("p10").value --> This is only referring to the
                                            value for the first row for that column (p10).

我需要item_id' p11'当我输入p10中的值时,反映p10和p09的值的差异。需要它跨该列的所有行工作。

2 个答案:

答案 0 :(得分:1)

我在这里使用jQuery。首先为每列的行添加一个公共类名。我在这里提供与id相同的类名。

$('[id]').each(function() {
    var ids = $('[id="p09"]');
    if (ids.length > 1 && ids[0] == this) {
        $('#' + this.id).addClass('p09');
        }
    var ids = $('[id="p10"]');
    if (ids.length > 1 && ids[0] == this) {
        $('#' + this.id).addClass('p10');
        }
    var ids = $('[id="p11"]');
    if (ids.length > 1 && ids[0] == this) {
        $('#' + this.id).addClass('p11');
        }
    });

现在你可以开始循环遍历以下元素: -

$(".p9").each(function(){
    $(this).val() = $(this).siblings(".p11").val() - $(this).siblings(".p10").val();
});

答案 1 :(得分:1)

嗯,这就是我解决这个问题的方法。我正在使用'PThis',它基本上是一个 this 指针,指向我报告中的每个单元格。我正在使用它来找出该特定单元格属于哪一行并使用该行号我正在访问我的计算将生效的其他单元格。

看看这个函数,代码应该是不言自明的。

   function change(pThis)    
    {

        var row = pThis.id.split('_')[1];

        var xyz= parseFloat(document.getElementById("xyz"+row).value) ;
        var abc= parseFloat(document.getElementById("abc"+row).value) ;
        var def= parseFloat(xyz)-parseFloat(abc);

        def= Math.round(def*100)/100; 
        document.getElementById("def"+row).value = def;

    }