2016-06-25 5 views
0

誰でも私のコードで間違っていることを教えていただけますか?私は、ループを使って関数を作成しようとしています。ユーザの選択に応じて、PDF文書に目に見えるラベルを隠したり、見えるようにしたりしています。PDF JavaScript:ループを使用した関数

私の元のコード:ループと

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;   
 
}

機能:'RangeError: Invalid argument value.

var setDisplay = function(display){ 
 
\t \t var fields = ["sugarlabel", "goodsugar", "sugarQualitylevellow" /*,...*/]; 
 
    for(var i=0; i< fields.length; i++){ 
 
    \t \t if(fields[i] == display) { 
 
\t   \t getField(fields[i]).display=display.visible; 
 
     } else { 
 
     \t \t getField(fields[i]).display=display.hidden; 
 
     } 
 
    } 
 
} 
 
if ((type == "sugar") && (countryofgrowth == "United State")) 
 
{ 
 
setDisplay("sugarlabel") 
 
}

私はエラーを取得しておきますよ

助けを借りてありがとうございます

答えて

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; 
     } 
    } 
} 

するときは、変数名が最適ではないとして、「タイプ」を使用して、再びものの(持っているとして、あなたは進むことができ

を一方、私は。なぜ機能が直接コマンドよりも利点をもたらすのか分かりませんが、スマートな階層フィールド命名法を使用すると、関連するすべてのフィールドを非表示にして必要なものを表示することができます。

+0

ありがとう、thats私のエラーを解決しましたが、同じ段階で複数のラベルを表示できるようにする必要はないと思っていたので、完全には機能しません。また、上記のコードでは、 そのうちの。あなたが「スマート階層フィールドネーミング」についてあなたのアイデアを投稿してくれたら、それは私にはうまくいくかどうかを確認してください。 – o0Lucky0o

+0

「スマート階層フィールドネーミング」...スマートは「よく考える」の略で、何もありませんソフトウェアなどと関係があります。 PDFの「階層フィールド命名」は、ピリオド「。」を使用してフィールド名をグループ化します。 「name.first」、「name.middle」、「name.last」などの区切り記号として使用します。特定のプロパティーでは、this.getField( "name")を使用してグループにアクセスし、たとえば、単一のコマンドでグループ全体を非表示にすることができます。 –

+0

ありがとうございます。あなたは私の関数をどのように変更することができるので、複数の値を返すように提案することもできますか?つまり、 'setDisplay( "sugarlabel")'& 'setDisplay( "goodsugar")'を表示したいのですか? Currenltyは、表示するフィールドの数に関係なく、1つだけを返します。 – o0Lucky0o

関連する問題