我使用LiveCycle设计器构建一个动态表单,它能够添加和删除嵌套表的行并计算每一行的总数。计算使用FormCalc,并使用[*]
函数来处理行的所有迭代。(例如,...someThing.Row1[*]
而不是...someThing.Row[0]
、...someThing.Row[1]
等)
这很好,但我也希望使用Javascript来更改按钮mouseUp上某些文本字段单元格的背景填充。我可以让它针对特定的单元格工作,但我不确定在Javascript中应该采取哪些步骤来处理元素的所有动态迭代。
例如,此JavaScript工作,但只针对单个单元格:
MainForm.roomTableSubform.roomTable.Row1.Table1.Row1.billWidth.fillColor = "0,0,0";
从逻辑上讲(正如我所理解的),如果使用FormCalc来针对重复的行,代码就会产生以下效果:
MainForm.roomTableSubform.roomTable.Row1[*].Table1.Row1[*].billWidth.fillColor = "0,0,0";
这显然不适用于Javascript。我已经阅读了有关resolveNode
的内容,这似乎是JavaScript的解决方案。我只是不确定如何在上下文中使用它来针对一些未公开的动态创建元素。
我在resolveNode中包含了整个表达式,用xfa.resolveNode("...
开始了表达式,使用了resolveNode (resolveNode("Row1[*]")
)中的星号,将它固定在Row所在的位置(Table1.resolveNode("Row1[*]").blah
)和我能想到的任何其他任意组合,都是徒劳的。
任何关于我哪里出错的洞察力都会受到极大的感谢。提前谢谢。
发布于 2014-03-12 11:37:53
xfa.resolveNode()
返回一个节点。您需要使用xfa.resolveNodes()
返回一个使用SOM表达式的节点集合。你可以用一个循环遍历节点。
var nodes = Table1.resolveNodes("Row1[*]");
var len = nodes.length;
for(var i = 0; i < len; i++){
nodes.item(i).fillColor = "255,200,200";
}
https://stackoverflow.com/questions/22336299
复制相似问题