在元素列表json之后丢失]

时间:2013-05-29 12:36:43

标签: javascript jquery json google-maps google-maps-api-3

我正在尝试在onclick事件上调用getPointOnMap函数,并为其提供一个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');
        }
    });
}

firebug输出(也有问题名称):

  在元素列表

之后

SyntaxError:missing]

getPointOnMap([object Object])

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

3 个答案:

答案 0 :(得分:4)

我认为不允许重新发布一个问题,无论如何你应该通过字符串而不是通过DOM创建HTML输入,这样你就可以将处理程序附加到函数而不是“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)
        }
    }
});

答案 1 :(得分: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');
        }
    });
}

答案 2 :(得分: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>"
             );
         });
    }
});