PDF JavaScript:带循环的函数

时间:2016-06-25 23:31:40

标签: javascript function loops pdf

任何人都可以告诉我下面的代码有什么问题吗?我正在尝试使用循环创建函数,以便根据用户选择在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.

非常感谢任何帮助

1 个答案:

答案 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”作为变量名称是次优的。

另一方面,我不明白为什么函数会比直接命令带来优势。通过使用一些智能分层字段命名,您可以获得更多,这将允许隐藏所有相关字段,然后显示您需要的内容。