2011-11-09 4 views
0

以下のw/argumentsメソッドでメソッド名を置き換えようとしましたが、これは機能しませんでした。バインドされたメソッドに引数を渡すにはどうすればよいですか?バインドと匿名のメソッドの比較

// just a minimizer method 

function m5(a,b) 
    { 
    return document.getElementById(a).onkeypress=b; 
    } 

// On page initialization thse methods are bound to text input boxes 

m5('signin_pass',bind_enter_key(event,interface_signin)); // this does not work 
m5('upload_file',bind_file_upload); 
+3

関数名の後にカッコを入れると、関数がすぐに呼び出されます。あなたが[function.bind](https://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/Function/bind)を望むように聞こえます。 –

+1

あなたはまだこの関数を呼び出しています。リンク先のページの「例」を参照してください。 –

+0

私はこれを理解していません –

答えて

2

あなたは正しいパラメータを使用して関数を呼び出す匿名関数でこのようにそれを行うことができます。これは、機能とその無名関数としてM5に渡される無名関数を作成します

// just a minimizer method 

function m5(a,b) { 
    return document.getElementById(a).onkeypress=b; 
} 

// On page initialization these methods are bound to text input boxes 

m5('signin_pass', function(event) {bind_enter_key(event,interface_signin)}); // this does not work 
m5('upload_file', bind_file_upload); 

は、あなたの関数を呼び出します適切なパラメータを使用します。

+0

私たちはその悪い 'event'変数に対処する必要があります。 – hugomg

+0

@missingno - ' event'はkeypressイベントであると仮定し、匿名関数宣言に追加しました。 – jfriend00

+0

このb.c.に行ってきました私はバインドメソッドの指示を理解することができます –

0

bind_enter_key関数は何を返しますか? イベントをonkeypressイベントに割り当てるときに関数を返す必要があります。あなたがキープレスイベントに事前に定義されたパラメータを持つbind_enter_key機能を呼び出したい場合は、クロージャを構築する必要があります:

m5('signin_pass',function(event){ 
    bind_enter_key(event,interface_signin); 
}); 

ちょうどノートでは、私がbind_enter_keyinterface_signinはグローバルで、この時点でアクセス可能であると信じています。

0
m5('signin_pass',bind_enter_key(event,interface_signin)); // this does not work 
//first argument is a string, works when passed to getElement.. 
//second argument is the result of a function call bind_enter_key. 
//if the function returns something other than a function, the assignment to a handler will fail 

m5('upload_file',bind_file_upload); 
//second art is a function, as it should be 
関連する問題