Jquery函数无法访问全局变量

时间:2017-08-17 04:35:46

标签: javascript jquery

我有两个jquery点击函数,用于设置和检索javascript对象的值。

var poly;

$( document ).ready(function() {
    //save drawing
    $("#save").click( function () {
        poly = new Polygon();
        poly.savedrawingaspoly(map.polygonevent);
        poly.tract = tract;
        poly.name = $('#polyname').val();
        console.log(poly);
    });

    $("#btnClear").click(function () {
        console.log(poly);
        //poly.clearplot();
    });
});

console.log(poly);中的$("#save").click有效。 console.log(poly);中的$("#btnClear").click返回undefined。如何扩展变量的范围,所以第二个可以看到变量?感谢。

3 个答案:

答案 0 :(得分:0)

您可以在.data() jQuery对象

#save存储和访问该对象
$( document ).ready(function() {
    //save drawing
    $("#save").click( function () {
        $(this).data().poly = new Polygon();
        $(this).data().poly.savedrawingaspoly(map.polygonevent);
        $(this).data().poly.tract = tract;
        $(this).data().poly.name = $('#polyname').val();
        console.log($(this).data().poly);
    });

    $("#btnClear").click(function () {
        if ($("#save").data().poly !== undefined) {
          $("#save").data().poly.clearplot();
        } else {
          console.log($("#save").data())
        }
    });
});

答案 1 :(得分:0)

定义类似全局并在事件和函数中使用它

$( document ).ready(function() {
    //save drawing
    var poly = new Polygon();
    $("#save").click( function () {
        poly.savedrawingaspoly(map.polygonevent);
        poly.tract = tract;
        poly.name = $('#polyname').val();
        console.log(poly);
    });

    $("#btnClear").click(function () {
        console.log(poly);
        //poly.clearplot();
    });
});

答案 2 :(得分:0)

使用窗口对象将变量保存在浏览器上下文中。所以新代码看起来像:

$("#save").click( function () {
        poly = new Polygon();
        poly.savedrawingaspoly(map.polygonevent);
        poly.tract = tract;
        poly.name = $('#polyname').val();
        console.log(poly);

        window.poly = poly;
});

实施上述代码后;您可以通过任何功能以及浏览器控制台访问 poly 变量。