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

时间:2015-12-10 15:41:43

标签: javascript adobe livecycle livecycle-designer

我认为这最终可以应用于对象和页面。目前,我真的更关心页面和子表单。

我想根据下拉菜单选项隐藏/显示多个页面。我当然搜索过这个主题。似乎没有人会问我所问的问题,而且最密切相关的问题只能回答单个对象而不是多个对象。我担心有近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;
}

我知道这本身就被认为是不优雅的,但考虑到工作表的整体设计,命名方案等,实际上没有办法让系统调用所有以相同方式开始的页面或子表单信件等。所以我必须单独列出每一个。那没关系!但我已经尝试了一百万种方法无济于事。我只是想要一种更简洁的方式来同时隐藏/显示多个页面和子表单,或者禁止将可见性重置为默认值。

1 个答案:

答案 0 :(得分:0)

Adob​​e论坛上的好朋友非常乐于助人并提供了following answer

使用数组和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";  
});