0

別のメソッドを呼び出すメソッドがあります (ajax の読み込み時ですが、この質問には関係ありません)。このメソッドにパラメータを渡したいです。これはどのように可能ですか?

以下のページは、ボタンのクリック時に id 25 にスクロールする必要があります (スクロール可能な領域はコードビハインドで動的に追加されます。これは、私が達成しようとしているものの例にすぎません)。

JS

<%@ Page Language="C#" Inherits="APTEIT.scrolltest" %>
<html>
<head>
</head>
<body>
<script type="text/javascript">
    function callHandler(handler) {
        handler();
    }
    function scroll(id) {
        alert("scrolling");
        $("#divy").scrollTop($("#"+id).position().top);
    }
</script>
<input type="button" value="scroll" onclick='var scroll={param1: "25"};callHandler(scroll)' />
</body>
</html>
4

4 に答える 4

0

パラメータを次のようにオブジェクトに入れます。

var handler = {
  param1: 'val1',
  param2: 'val2' //ect...
}

handler(handler);

編集:

変化:

$("#divy").scrollTop($("#"+id).position().top);

に:

$("#divy").scrollTop($("#"+id.param1).position().top);

編集した質問で機能するはずです。

于 2012-06-15T14:38:18.287 に答える
0

更新 1

この場合にできることは、要素thisのコンテキストでキーワードを使用することだと思います。inputこれがインスタンスで最終的に行うことは、 に置き換えるidことthisです。これにより、追加の選択も削除されます。これを試して:

function callHandler(handler)
{
    handler();
}

function scroll()
{
    $("#divy").scrollTop($(this).position().top);
}

thisinputコンテキストが、またはのコンテキストになるかどうかわからないので、うまくいかないかもしれません。試してみてcallHandlerください! :)

オリジナル

次のようにパラメーターをハンドラーに渡すことができるはずです。

function callHandler(handler)
{
    var param = 'Hello world';
    handler(param);
}

callHandler(function(phrase)
{
    alert(phrase); 
});
于 2012-06-15T14:38:29.587 に答える
0

私が誤解していない限り、通常のシナリオのようhandlerfunction引数を渡します。

function callHandler(handler){
   var passme = "test";
   handler(passme);
}
于 2012-06-15T14:38:47.700 に答える
0

メソッドのハンドラーにパラメーターを渡していないようです。代わりに、パラメーター (つまり) を関数としてcallHandler呼び出そうとします。scrollvar scroll={param1: "25"}

scroll構成オブジェクトと関数名の両方に同じ名前を使用します。別の名前を使用してください :) さらに、宣言された関数の署名と使用された関数の署名が一致しません。関数は、代わりにオブジェクトを渡そうとしているときにscroll文字列を受け入れます。id

于 2012-06-15T14:50:38.383 に答える