0

这似乎很简单,但我还没有找到一个明确的答案。

我在母版页中有一个具有全局绑定的下拉框。我想要一个单独的按钮,位于设计内容区域(不是母版页),当单击时,告诉母版页中下拉框的任何实例隐藏或可见等。

在 SOM 编辑器中,下拉框告诉我它的层次结构是:

form1.MasterPages.Page1.Header.projectSize

在单击按钮的 JavaScript 中,我尝试过:

xfa.resolveNodes("form1.MasterPages.Page1[*].Header.projectSize").presence="hidden";

var nodes = form1.MasterPages.resolveNodes("Page1[*].Header");
var len = nodes.length;
for(var i = 0; i < len; i++) {
  nodes.item(i).projectSize.presence="hidden";
}

以及带有xfa.resolveNodes("before的类似脚本form1.Master...,所有这些都不起作用。

是否可以定位母版页元素,如果可以,正确的语法是什么?

先感谢您。

编辑*

因此,经过仔细检查,var nodes 方法实际上是有效的。但它仅在第二次单击该按钮时才有效。单击按钮时运行的其他脚本工作正常,但母版页下拉菜单仅在再次单击按钮时“隐藏”......显然这是现在的问题。

4

1 回答 1

1

我已经弄清楚了我的问题。不确定这是否可以帮助其他人,但这是我的解决方案,尽管我不完全理解它为什么有效。

要将下拉元素定位在母版页的每个潜在迭代上,然后隐藏每个迭代,此 JavaScript 在位于文档正文中的按钮中工作(我相信它与我最初所说的相同):

var nodes = form1.MasterPages.resolveNodes("Page1[*].Header");
var len = nodes.length;
for (var i = 0; i < len; i++){
  nodes.item(i).projectSize.presence="hidden";
}

在拆开旁边运行的其他脚本后,我发现另一个表以及我用来隐藏它的脚本是母版页下拉元素需要两次单击才能正常运行的原因。

罪魁祸首表被调用notesTable并位于名为 的子表单中GrandTotals。以下脚本与其他脚本一起工作得很好,但在母版页引用脚本开始发挥作用后就失败了:GrandTotals.notesTable.presence="hidden";

我发现在第一次单击时使所有内容协同工作的解决方法是引用其中的每个单元格项目notesTable并独立隐藏它们:

form1.GrandTotals.notesTable.HeaderRow.notesHeader.presence="hidden";
form1.GrandTotals.notesTable.Row1.notes.presence="hidden";

我只有 2 个单元格作为目标,所以这不是什么大问题,但我可以想象这个解决方案会因许多行和单元格等而变得混乱。无论哪种方式,一个冗余的、更长的黑客修复仍然是一个修复。

我仍然不确定为什么会出现这个问题,以及为什么会解决它。我在其他引用 JavaScript 时遇到了一些其他问题,这些 JavaScript 不够“具体”,必须进行更改以引用层次结构中更多冗余特定的位才能正常工作。这些问题在一周前还没有发生,现在它们已成为主要障碍。我认为这可能与某种 PDF / Reader 背景更新有关,但我不能确定。

无论如何,这是对随机问题的随机修复,但它可能会为其他有类似困惑的人清除一些故障排除。

于 2014-03-21T21:15:26.083 回答