在Adobe Livecycle(可能是Javascript)中,我如何引用多个页面/子页面来同时隐藏它们

In Adobe Livecycle (possibly Javascript), how do I reference multiple pages/subpages to hide them simultaneously?

本文关键字:隐藏 引用 何引用 Livecycle Adobe Javascript      更新时间:2023-09-26

我想这最终可以应用于对象和页面。不过,目前我更关心页面和子表单。

我想根据下拉菜单选择隐藏/显示多个页面。我当然搜索过这个主题。似乎没有人完全问我在问什么,而最密切相关的问题只回答单个对象,而不是多个对象。我有将近80个不同的页面/子表单需要担心。

我有一个下拉菜单,根据选择,以前隐藏的某些页面和子窗体将变为可见。然而,我正试图建立某种宽恕,这样,如果有人不小心在下拉菜单上选择了错误的项目,并返回进行自我纠正,要么(1)所有相关页面都将返回到默认的隐藏状态,然后继续前进并使某些选择可见,要么(2)手动命名每个对象,并告知其返回隐藏状态。

我找到的唯一方法如下:

switch (newValue)
{
    case "1":
        this.resolveNode("subform_1").presence = "visible";
        this.resolveNode("subform_2").presence = "hidden";
        this.resolveNode("page_3").presence = "hidden";
        break;
    case "2":
        this.resolveNode("subform_1").presence = "hidden";
        this.resolveNode("subform_2").presence = "visible";
        this.resolveNode("page_3").presence = "hidden";
        break;
    case "3":
        this.resolveNode("subform_1").presence = "hidden";
        this.resolveNode("subform_2").presence = "hidden";
        this.resolveNode("page_3").presence = "visible";
        break;
}

这是乏味的,耗时的,而且不雅。相反,我想做的是同时寻址多个对象。类似于:

switch (newValue)
{
    case "1":
        this.resolveNode("subform_2", "page_3").presence = "hidden";
        this.resolveNode("sabform_1").presence = "visible";
        break;
    case "2":
        this.resolveNode("subform_1", "page_3").presence = "hidden";
        this.resolveNode("subform_2").presence = "visible";
        break;
    case "3":
        this.resolveNode("subform_1", "subform_2").presence = "hidden";
        this.resolveNode("page_3").presence="visible";
        break;
}

我知道这本身就被认为是不雅的,但考虑到表单的整体设计、命名方案等,系统真的没有办法调用所有以相同字母等开头的页面或子表单。所以我不得不单独命名每一个。这很好!但我已经尝试了无数种方法,但都无济于事。我只是想要一种更精简的方式来同时隐藏/显示多个页面和子表单,或者禁止它将可见性重置为默认值。

Adobe论坛上的好心人非常乐于助人,并提供了以下答案:

使用数组和forEach()方法,您可以编写一个非常紧凑的脚本来完成您想要的任务。

var aObjects = [[subpage_1, "1"], [subpage_2, "2"], [page_3", "3"]],  
  cSelection = xfa.event.change;  
// Loop through all elements in the array…  
aObjects.forEach(function (element) {  
    //… and set its presence  
    // element[0] is the first value of the nested array i.e. "subpage_1", element[1] is the second value i.e. "1"  
    element[0].presence = element[1] === cSelection ? "visible" : "hidden";  
});