4

我正在尝试getPointOnMap在 onclick 事件上调用函数并为其提供一个 json 对象作为参数。

这是代码示例:

$.ajax({
    type: "POST",
    url: "/getResult.json",
    success: function(result) {
        var html = '';
        for (var i = 0; i < result.length; i++) {
            var obj = result[i];
            html += "<input type='checkbox' onClick='getPointOnMap(" + obj + ")'/>" + obj.address + "<br>";
        }
        $("#myDiv").append(html);
    }
});

这是功能getPointOnMap

function getPointOnMap(object) {
    map.addMarker({
        lat: object.lattitude,
        lng: object.longtitude,
        click: function(e) {
            alert('You clicked in this marker');
        }
    });
}

萤火虫输出(也在问题名称中):

语法错误:元素列表后缺少 ]

getPointOnMap([object Object])

我应该怎么做才能传递正确的对象?

4

3 回答 3

4

我认为不允许重新发布问题,无论如何您应该创建您的 HTML 输入,而不是通过字符串而是通过 DOM,因此您可以将处理程序附加到函数而不是“onclick”。

$.ajax({
    type: "POST",
    url: "/getResult.json",
    success: function(result) {
        for (var i = 0; i < result.length; i++) {
            (function (n) {
                var obj = result[i],
                    element = $("<input>", {type: "checkbox"});
                element.click(function () {
                    getPointMap(obj);
                });
                $(document.body).append(element, obj.address + "<br />");
            })(i)
        }
    }
});
于 2013-05-29T12:41:16.660 回答
0

好的,简单的方法:

html += "<input type='checkbox' onClick='getPointOnMap(" + obj.lattitude + ", " + obj.longtitude + ")'/>" + obj.address + "<br>";

function getPointOnMap(lat,lng) {
    map.addMarker({
        lat: lat,
        lng: lng,
        click: function(e) {
            alert('You clicked in this marker');
        }
    });
}
于 2013-05-29T12:46:05.063 回答
0
$.ajax({
    type: "POST",
    url: "/getResult.json",
    success: function(result) {
         var myDiv = $('#myDiv');
         $.each(result, function(i, obj) {
             myDiv.append(
                 $('<INPUT>').attr('type', 'checkbox').on('click', function() {
                     getPointOnMap(obj);
                 },
                 obj.address,
                 "<br>"
             );
         });
    }
});
于 2013-05-29T12:49:04.610 回答