2017-08-17 14 views
1

javascriptオブジェクトから値を取得および設定する2つのjqueryクリック関数があります。Jquery関数がグローバル変数にアクセスできない

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の場合は未定義が返されます。どのように変数の範囲を広げるので、2番目の変数は変数を見ることができますか?ありがとう。

+0

保存する前にbtnClearをクリックしていますか? –

+1

これをもう一度やって、保存する前にbtnClearをクリックしていますか?そうでなければ、このコードはうまくいくはずです... –

+0

この行を上に書く: var poly; ポリ=新しいポリゴン(); – Dilip

答えて

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(); 
    }); 
}); 
+0

@Barmarあなたの最初のコメントはAnswerの再読を強要し、 '$("#btnClear ")ハンドラのアプローチの' $( "save#)。 – guest271314

0

をオブジェクトを格納してアクセスすることができますあなたの変数はブラウザのコンテキストで。したがって、新しいコードは次のようになります:

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

     window.poly = poly; 
}); 

上記のコードを実装した後、任意の機能を通じて、またブラウザコンソールからポリにアクセスすることができます。

0

を、それを使用.data()#saveのjQueryオブジェクトで

$(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()) 
     } 
    }); 
}); 
関連する問題