2011-02-08 8 views
0

関数の引数とその変数やオブジェクトの仕組みを読んで、何百万回も値を渡しているにもかかわらず、実際の例では私を捨ててしまいます。この例のキーワード "this"は、フォーム要素である関数のオブジェクトを指しています。 OKはそれを得た。javascript関数のパラメータの命名要件

今、window.onloadイベントハンドラの外にある関数には、 "frm"という名前のパラメータがあります。私の質問は、このパラメータに渡すフォーム要素のID(この場合は 'frm')と同じ名前を与える必要があるかどうかです。私はこれが問題ではないと思った。それが重要なことは、関数自体の内部でローカル変数として再利用されている限り、引数の中に何かを入れることができるということです。

window.onload = function() { 
    // validation for submit button 
    document.frmFlight.onsubmit = function() { 
     //console.log("what is 'this'?: "+this); 
     return validate(this); 
    }  
} 

//---------------------------------------------------------- 
function validate(frm) { 
    var valid = true; 
    return valid; 
} 
+0

私は「FRM」についての質問は全く明らかではないが、怖い、あなたはもう少し説明することができますか? –

答えて

1

それはあなたが求めている正確に何明確ではないのですが、あなたは、関数のシグネチャに引数を与える名前は、関数にを渡すかもしれないものの名前にどのような方法で関連していません。それは、あなたが望むような(ちょうど)何でもすることができます。これらはすべて等価です:

function validate(frm) { 
    // ... 
} 

function validate(theForm) { 
    // ... 
} 

function validate(foo) { 
    // ... 
} 

上記のご利用、だけで結構ですので、あなたには、イベントが発生し、機能(onsubmitプロパティに機能を割り当てることによって)あなたが持っている方法で、イベントハンドラを設定するときthisがフォームのDOM要素を参照するように呼び出されます。その関数が(それが何を呼び出すかに関係なく)その引数を使用しているとすれば、あなたは良い状態にあります。

+0

;はい、これは私の質問に答えます。それは重要であるように見えたが、そうではないように見える。ありがとう! – Immers

0

frmは、その関数に渡される変数を参照します。あなたの例では、onLoad関数からのthisオブジェクトです。 validate関数では、あなたが望むものを呼び出すことができます。

1

機能パラメータ名は任意です。選択した名前は、後で関数に渡されるオブジェクトの型とは関係がありません。

私の質問は、この場合 'frm'のフォーム要素のIDを引数と呼ぶ必要がありますか?

「検証」のパラメータの名前が、渡されるDOM要素のIDと一致する必要があるかどうかを確認するように聞こえるようです。 (私は、「コール」よりもオーバーロードの少ない言葉を使用するためにこれを再度述べるだろう)。

答えはいいえ。

理解する一般的な概念は、関数に渡されるものの種類を認識していないことです。関数 "validate"は、実行時に任意の型の引数を取ることができます。パラメータの名前は無関係です。

+0

大丈夫です!はい、それは私の疑問です。私のコースは私に混乱を引き起こしていました。私は基本的にそれが問題ではないという確認を必要とした。 – Immers

0

ええ、あなたの質問があまりにも明確ではないが、(この場合はFRM)でパラメータ名は、あなたが例に渡します何かを参照だけです。

function validate(frm){ 
    return true; 
} 

validate('Bob') 
validate(3) 
0

私はかどうかわかりませんこれは、あなたの質問に関連していますが、あなたのonSubmitハンドラで次の操作を実行した場合、「この」キーワードをご参照を指定:

return validate.call(this); 

は、その後、あなたの検証機能の中に、「これは」形式を指します例えば:

function validate(){ 
    var valid = this.elements[0].length > 0; 
    return valid; 
} 

さらに、このような状況で、あなたも行うことができます:

document.frmFlight.onsubmit = validate; 
関連する問題