2012-01-26 22 views
0

コールバック関数を使用したことがあり、特定のUI要素が変更されたときに呼び出されるjqueryをいくつか上書きしようとするのが難しいです。これは私がやっていることの非常に簡単な例です。 e.SetBorderWidthを呼び出すと、関数に10が正しく渡されます。しかし、コールバックを使用しようとすると、SetBorderWidthは未定義になります。なぜ、何を変える必要があるのか​​?ありがとう。javascriptのコールバックパラメータが定義されていません

javascriptのコード----

element = { 
    border: { 
     width:0 
    }, 

    SetBorderWidth : function(newWidth){ 
     this.border.width = newWidth; 
    } 
}; 

elementChild = function(){ 
    padding: 0 
}; 

elementChild.prototype = element; 


var e = new elementChild(); 

var callback = e.SetBorderWidth; 

function SetWidth(){ 
    e.SetBorderWidth(10); 
    alert(e.border.width); 

    callback.call(10); 
    alert(e.border.width); 
} 

とhtmlコード

<input type="button" onclick="SetWidth();" value="Click" /> 

答えて

2

だけcallback(10)を行います。 .callを追加すると、引数の代わりにコンテキスト(this変数)として10が渡されます。

+0

私は欠けている文脈に同意しますが、それは 'this'であるべきです。関数 'SetWidth'の中で何が実行コンテキストとして渡されるべきかを言うのは本当に難しいです。 –

+0

私は文脈が 'this'より' e'であるべきだと思います。 –

+0

コールバックだけに変更し、this.border.width = newWidthをe.border.width = newWidthに変更しました。それは機能しましたが、これは私が望んでいたものではありません。私は、このオブジェクトのインスタンスの変数名を知っていることに縛られているようです。これを行う別の方法がありますか?ありがとう。 –

関連する問題