非常基本的javascript函数调用

Very basic javascript function call

本文关键字:javascript 函数调用 非常      更新时间:2023-09-26

我做API传单已经2天了。我被一个函数调用卡住了,它给了我意想不到的行为。代码如下

var it=0;
 
var map = L.map('map1', {
    center:[51.505,-0.09],
    zoom: 2,
});
 
L.tileLayer('http://{s}.tile.cloudmade.com/c77b2fb7bfb74f74998061abda20d58f/997/256/{z}/{x}/{y}.png',{
    attribution: '2013 &copy @ Rajat/Akshat',
    maxZoom: 18
}).addTo(map);
 
var marker = L.marker([51.5,-0.09], {draggable: true, opacity: 0.8}).addTo(map);
function onDragEnd(e) {
    var lat_marker = e.target._latlng.lat;
    var lng_marker = e.target._latlng.lng;      
}
var i=6;
marker.on('dragend',onDragEnd(event));

已在HTML页面上创建map1 div id。

现在的问题是这个功能:

marker.on('dragend',onDragEnd(event));

显示此错误

ReferenceError:事件未定义

marker.on('dragend',onDragEnd(event));

但当我在没有任何参数marker.on('dragend',onDragEnd());的情况下传递它时,它就起作用了。

此外,我想在函数中添加我自己的参数:

marker.on('dragend',onDragEnd(i));

其中i是一些简单变量。但是这个函数出了问题,没有按预期工作。

onDragEnd(event)

执行该功能。您只需要传入函数引用

marker.on('dragend',onDragEnd);

在函数之后使用()会立即执行函数。您希望此方法在拖动结束时充当回调。

当调用此方法时,事件对象在y默认情况下传递。因此,您不必担心将其作为参数传递

function onDragEnd(event) {

要传入自定义参数,您可以在以下行中尝试一些操作。。

for(var i=0; i < $('span').length ; i++) {
    $('span').eq(i).on('click', bindClick(i));
}
function bindClick(index) {
    return function(e) {
        dragEnd(e, index);
    }
}
function dragEnd(e, index) {
    console.log(e);
    console.log(index);
}

代码

for (var i = 0; i < $('.marker').length; i++) {
    var marker = $('.marker').eq(i);
    $('span').eq(i).on('dragend', bindDragEnd(i));
}
function bindDragEnd(index) {
    return function (e) {
        dragEnd(e, index);
    }
}
function dragEnd(e, index) {
    console.log(e);
    // you can access the marker object 
    //by accessing it like $('.marker').eq(index)
}

检查Fiddle