使用参数调用javascript处理程序

时间:2012-06-15 14:35:59

标签: javascript parameters handler

我有一个方法调用另一个方法(在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 个答案:

答案 0 :(得分:0)

将参数放入一个对象中:

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

handler(handler);

修改

变化:

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

为:

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

适用于您编辑的问题。

答案 1 :(得分:0)

更新1

我认为在这个实例中您可以做的是在this元素的上下文中使用input关键字。在您的实例中最终会做的是将id替换为this。这也将删除额外的选择。试试这个:

function callHandler(handler)
{
    handler();
}

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

this可能不起作用,因为我不确定上下文是input还是callHandler的上下文,请试一试! :)

原始

您应该能够将参数传递到处理程序中,如下所示:

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

callHandler(function(phrase)
{
    alert(phrase); 
});

答案 2 :(得分:0)

除非我误解,如果handlerfunction,那么就像任何正常情况一样将参数传递给它。

function callHandler(handler){
   var passme = "test";
   handler(passme);
}

答案 3 :(得分:0)

您似乎没有将参数传递给callHandler方法中的处理程序 - 而是尝试将scroll参数(var scroll={param1: "25"})作为函数调用。

您对配置对象和函数名称使用相同的名称scroll。请使用不同的名称:)此外,您声明和使用的功能签名不同意。当您尝试传入对象时,scroll函数接受字符串id