我有一个方法调用另一个方法(在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>
答案 0 :(得分:0)
将参数放入一个对象中:
var handler = {
param1: 'val1',
param2: 'val2' //ect...
}
handler(handler);
修改强>
变化:
$("#divy").scrollTop($("#"+id).position().top);
为:
$("#divy").scrollTop($("#"+id.param1).position().top);
适用于您编辑的问题。
答案 1 :(得分:0)
我认为在这个实例中您可以做的是在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)
除非我误解,如果handler
是function
,那么就像任何正常情况一样将参数传递给它。
function callHandler(handler){
var passme = "test";
handler(passme);
}
答案 3 :(得分:0)
您似乎没有将参数传递给callHandler
方法中的处理程序 - 而是尝试将scroll
参数(var scroll={param1: "25"}
)作为函数调用。
您对配置对象和函数名称使用相同的名称scroll
。请使用不同的名称:)此外,您声明和使用的功能签名不同意。当您尝试传入对象时,scroll
函数接受字符串id
。