任何人都可以告诉我下面的代码有什么问题吗?我正在尝试使用循环创建函数,以便根据用户选择在PDF文档中隐藏和制作可见标签。
我的原始代码:
if ((type == "sugar") && (countryofgrowth == "United State"))
{
getField("sugarlabel").display=display.visible;
getField("goodsugar").display=display.hidden;
getField("sugarQualitylevellow").display=display.hidden;
getField("sugarQualitylevelhigh").display=display.hidden;
getField("sugarQualitylevelhighmorethan75").display=display.hidden;
getField("sugarQualitylevelhighlessthan75").display=display.hidden;
getField("cornquantity").display=display.hidden;
getField("cornquantitymorethan500").display=display.hidden;
getField("cornquantitymax").display=display.hidden;
getField("cornquantitymaxyes").display=display.hidden;
getField("cornquantitymaxno").display=display.hidden;
}
else if ((type == "sugar") && (countryofgrowth == "United Kingdom"))
{
getField("sugarlabel").display=display.hidden;
getField("sugarquality").display=display.visible;
getField("sugarQualitylevellow").display=display.hidden;
getField("sugarQualitylevelhigh").display=display.hidden;
getField("sugarQualitylevelhighmorethan75").display=display.hidden;
getField("sugarQualitylevelhighlessthan75").display=display.hidden;
getField("cornquantity").display=display.hidden;
getField("cornquantitymorethan500").display=display.hidden;
getField("cornquantitymax").display=display.hidden;
getField("cornquantitymaxyes").display=display.hidden;
getField("cornquantitymaxno").display=display.hidden;
}
循环函数:
var setDisplay = function(display){
var fields = ["sugarlabel", "goodsugar", "sugarQualitylevellow" /*,...*/];
for(var i=0; i< fields.length; i++){
if(fields[i] == display) {
getField(fields[i]).display=display.visible;
} else {
getField(fields[i]).display=display.hidden;
}
}
}
if ((type == "sugar") && (countryofgrowth == "United State"))
{
setDisplay("sugarlabel")
}
我一直收到错误:'RangeError: Invalid argument value.
非常感谢任何帮助
答案 0 :(得分:1)
错误消息引用哪行?
使用变量名称也不是很聪明,变量名称也是对象的属性。因此,我建议使用其他东西而不是变量“display”。
最好定义一个独立于任何变量的函数,因为它可以经常用作文档级脚本。该功能可能如下所示:
function setDisplay(item)
{
var fields = ["sugarlabel", "goodsugar", "sugarQualitylevellow" /*,...*/];
for(var i=0; i< fields.length; i++){
if(fields[i] == item) {
this.getField(fields[i]).display=display.visible;
} else {
getField(fields[i]).display=display.hidden;
}
}
}
当你调用它时,你可以继续进行(尽管再次使用“type”作为变量名称是次优的。
另一方面,我不明白为什么函数会比直接命令带来优势。通过使用一些智能分层字段命名,您可以获得更多,这将允许隐藏所有相关字段,然后显示您需要的内容。